二十. 通过管道组合Shell命令获取系统运行数据:

1.  输出当前系统中占用内存最多的5条命令:

    #1) 通过ps命令列出当前主机正在运行的所有进程。

    #2) 按照第五个字段基于数值的形式进行正常排序(由小到大)。

    #3) 仅显示最后5条输出。

    /> ps aux | sort -k 5n | tail -5

    stephen   1861  0.2  2.0  96972 21596  ?  S     Nov11   2:24 nautilus

    stephen   1892  0.0  0.4 102108  4508  ?  S<sl Nov11   0:00 /usr/bin/pulseaudio 

    stephen   1874  0.0  0.9 107648 10124 ?  S     Nov11   0:00 gnome-volume

    stephen   1855  0.0  1.2 123776 13112 ?  Sl     Nov11   0:00 metacity

    stephen   1831  0.0  0.9 125432  9768  ?  Ssl   Nov11   0:05 /usr/libexec/gnome

    

    2.  找出cpu利用率高的20个进程:

    #1) 通过ps命令输出所有进程的数据,-o选项后面的字段列表列出了结果中需要包含的数据列。

    #2) 将ps输出的Title行去掉,grep -v PID表示不包含PID的行。

    #3) 基于第一个域字段排序,即pcpu。n表示以数值的形式排序。

    #4) 输出按cpu使用率排序后的最后20行,即占用率最高的20行。

    /> ps -e -o pcpu,pid,user,sgi_p,cmd | grep -v PID | sort -k 1n | tail -20



    3.  获取当前系统物理内存的总大小:

    #1) 以兆(MB)为单位输出系统当前的内存使用状况。

    #2) 通过grep定位到Mem行,该行是以操作系统为视角统计数据的。

    #3) 通过awk打印出该行的第二列,即total列。

    /> free -m | grep "Mem" | awk '{print $2, "MB"}'

    1007 MB



二十一. 通过管道组合Shell命令进行系统管理:



    1.  获取当前或指定目录下子目录所占用的磁盘空间,并将结果按照从大到小的顺序输出:

    #1) 输出/usr的子目录所占用的磁盘空间。

    #2) 以数值的方式倒排后输出。

    /> du -s /usr/* | sort -nr

    1443980 /usr/share

    793260   /usr/lib

    217584   /usr/bin

    128624   /usr/include

    60748    /usr/libexec

    45148    /usr/src

    21096    /usr/sbin

    6896      /usr/local

    4           /usr/games

    4           /usr/etc

    0           /usr/tmp

    

    2.  批量修改文件名:

    #1) find命令找到文件名扩展名为.output的文件。

    #2) sed命令中的-e选项表示流编辑动作有多次,第一次是将找到的文件名中相对路径前缀部分去掉,如./aa改为aa。

    #    流编辑的第二部分,是将20110311替换为mv & 20110310,其中&表示s命令的被替换部分,这里即源文件名。

    #    \1表示被替换部分中#的\(.*\)。

    #3) 此时的输出应为

    #    mv 20110311.output 20110310.output

    #    mv 20110311abc.output 20110310abc.output

    #    最后将上面的输出作为命令交给bash命令去执行,从而将所有20110311*.output改为20110311*.output

    /> find ./ -name "*.output" -print  | sed -e 's/.\///g' -e 's/20110311\(.*\)/mv & 20110310\1/g' | bash

    

    3.  统计当前目录下文件和目录的数量:

    #1) ls -l命令列出文件和目录的详细信息。

    #2) ls -l输出的详细列表中的第一个域字段是文件或目录的权限属性部分,如果权限属性部分的第一个字符为d,

    #    该文件为目录,如果是-,该文件为普通文件。

    #3) 通过wc计算grep过滤后的行数。

    /> ls -l * | grep "^-" | wc -l

    /> ls -l * | grep "^d" | wc -l

    

    4.  杀掉指定终端的所有进程:

    #1) 通过ps命令输出终端为pts/1的所有进程。

    #2) 将ps的输出传给grep,grep将过滤掉ps输出的Title部分,-v PID表示不包含PID的行。

    #3) awk打印输出grep查找结果的第一个字段,即pid字段。

    #4) 上面的三个组合命令是在反引号内被执行的,并将执行的结果赋值给数组变量${K}。

    #5) kill方法将杀掉数组${K}包含的pid。

    /> kill -9 ${K}=`ps -t pts/1 | grep -v PID | awk '{print $1}'`    



    5.  将查找到的文件打包并copy到指定目录:

    #1) 通过find找到当前目录下(包含所有子目录)的所有*.txt文件。

    #2) tar命令将find找到的结果压缩成test.tar压缩包文件。

    #3) 如果&&左侧括号内的命令正常完成,则可以执行&&右侧的shell命令了。

    #4) 将生成后的test.tar文件copy到/home/.目录下。

    /> (find . -name "*.txt" | xargs tar -cvf test.tar) && cp -f test.tar /home/.

    

    #1) cpio从find的结果中读取文件名,将其打包压缩后发送到./dest/dir(目标目录)。

    #2) cpio的选项介绍:

    #    -d:创建需要的目录。

    #    -a:重置源文件的访问时间。

    #    -m:保护新文件的修改时间。

    #    -p:将cpio设置为copy pass-through模式。 

    /> find . -name "*" | cpio -dampv ./dest/dir

   最后需要说明的是,该篇Blog中绝大多数的示例来自于互联网,是本人经过一天左右的时间收集和整理之后筛选出来的,其中注释部分是我在后来添加的,以便于我们阅读时的理解。如果今后再发现更好更巧妙的Shell组合命令,本人将持续更新该Blog。如果您有确实非常不错的Shell命令组合,且愿意和我们在这里分享,可以直接放在回复中,本人将对该篇Blog始终保持重点关注。

linux 8 -- 管道组合Shell命令进行系统管理的更多相关文章

  1. 利用ganymed-ssh2远程执行其它Linux机器上的shell命令

    实际应用中,有时候需要从web管理界面上,远程去启动其它linux主机上的程序,利用ssh协议可以方便的满足这一需求.事实上hadoop架构中,从nn上启动dn时,就是利用了免密码ssh登录.gany ...

  2. 自学Linux Shell2.1-进入shell命令行

    点击返回 自学Linux命令行与Shell脚本之路 2.1-进入shell命令行 进入文本命令行界面(CLI)两种方法: 控制台终端 图形化终端 1. 通过Linux控制台终端访问CLI 按下Ctrl ...

  3. linux C中调用shell命令和运行shell脚本

    1.system(执行shell 命令) 相关函数 fork,execve,waitpid,popen表头文件 #include<stdlib.h>定义函数 int system(cons ...

  4. Unix/Linux环境C编程入门教程(39) shell命令之系统管理

    df命令 用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况.命令的使用格式如下: df  [选项] 常用参数及含义如下表所示. df -a:显示所有文件系统的磁盘 ...

  5. Linux下常用的shell命令记录1

     硬件篇 CPU相关 lscpu #查看的是cpu的统计信息. cat /proc/cpuinfo #查看CPU信息详细信息,如每个CPU的型号,主频等 内存相关 free -m #概要查看内存情况 ...

  6. Linux下常用的shell命令记录

     硬件篇 CPU相关 lscpu #查看的是cpu的统计信息. cat /proc/cpuinfo #查看CPU信息详细信息,如每个CPU的型号,主频等 内存相关 free -m #概要查看内存情况 ...

  7. linux的管道 |和grep命令以及一些其他命令(diff,echo,cat,date,time,wc,which,whereis,gzip,zcat,unzip,sort)

    linux提供管道符号“|”,作用是命令1的输出内容作为命令2的输入内容.通常与grep命令一起使用. 格式:命令1 |命令2 grep命令:全称为global regular expression ...

  8. [转] 用管道获得shell 命令的输出

    用管道: 通过fgets(buf, n, ptr)buf就可以得到命令“ps -ef"一样的信息, 读帮助”man popen": char *cmd = "ps -ef ...

  9. Linux C/C++计划Shell命令大杂烩(1)

    1, 请参见发行信息 cat /etc/issue 2, 查看内核版本号 uname -r 查看内核版本号 uname -p 查看处理器类型32bit/64bit uname -n 查看网络主机名(o ...

随机推荐

  1. axis2 利用小工具cat.aar

    Axis2: Web Service是现在最适合实现SOAP的技术,而Axis2是实现Web Service的一种技术框架(架构). 昨天把把菜刀脚本打包发现<>在xml会被转义,导致菜刀 ...

  2. centos内核基本调优

    一.内核(/etc/sysctl.conf) 1.加大端口号范围net.ipv4.ip_local_port_range = 10240 65000 2.tcp/ip重用及超时限制net.ipv4.t ...

  3. C++ 智能指针详解(转)

    C++ 智能指针详解   一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常 ...

  4. hector_localization hector_salm rplidar同时编译

    1.将hector_localization包clone到src文件夹  进行功能包依赖安装 cd test_ws rosdep update rosdep install --from-paths ...

  5. objective-C中的扩展方法与partial class

     在c#中要扩展一个现有类非常easy,比方这样: ? 1 2 3 4 5 6 7 public static class Utils {     public static void PrintTo ...

  6. appearance 设置公共属性

    //设置公共TabBarItem 的属性 [UITabBarItem appearance] //设置公共NavigationBar 的属性 [UIBarButtonItem appearance]

  7. inotify+rsync

    backup_to_rsync.sh #!/bin/bash #source function library . /etc/init.d/functions rsync_host=rsync.eti ...

  8. [译]GLUT教程 - 改变窗体大小

    Lighthouse3d.com >> GLUT Tutorial >> Basics >> Resizing the Window 上一章的例子创建了两个窗体,命 ...

  9. linux应用网址

    APUE学习:(十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字 linux应用学习笔记(已列目录供跳转):http://www.cnblogs.com/ggj ...

  10. spring roo反向工程

    1.创建spring roo工程   2.在数据库中创建数据库feedback_schema,再创建几张表   3.创建连接数据库 persistence setup --provider HIBER ...