二十. 通过管道组合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. Au cs6怎样才能导入和导出m4a或者就是aac格式的文件呢?

        [求解]Au cs6怎样才能导入和导出m4a或者就是aac格式的文件呢?   汉化版;解决发法----首选项------常规------媒体与暂存盘-----动态链接媒体下面的启动DLMS格式 ...

  2. 自动化统一安装部署tomcat

    背景:多台服务器来回切换,安装部署tomcat,浪费时间 目的: 一次修改,统一安装,统一部署. 进程:ps -ef|grep tomcat|grep -v 'grep'|awk '{print $2 ...

  3. 仿新浪首页、主题、详情页,纯html静态页面

    仿新浪首页.主题.详情页.纯html静态页面,下载地址: http://download.csdn.net/detail/sweetsuzyhyf/8085535

  4. Gradle学习小结

    build.gradle(依赖配置) // 普通java工程 apply plugin: 'java' // Idea工程 apply plugin: 'idea' // war工程,需要有webap ...

  5. Unhandled event loop exception No more handles 解决办法

    1 http://stackoverflow.com/questions/9074189/unhandled-event-loop-exception-in-plugin-org-eclipse-ui ...

  6. declare @t table

    DECLARE @t TABLE(date char(21))INSERT @t SELECT '1900-1-1 00:00:00.000'INSERT @t SELECT '1900-1-1 00 ...

  7. nightwatch-js ----并发运行

    从v0.5开始nightwatch支持并发测试.通过在命令行中指定多个环境来工作,用逗号分隔.例如: $ nightwatch -e default,chrome 这样可以在多个相同或是不同的浏览器上 ...

  8. linux安全组配置

    万网的是这样子配置的:

  9. 借助Anyproxy实时监控接口调用次数和流量

    监控接口调用次数,是为了测试客户端可能会异常频繁的调用服务端接口,出现性能问题. AnyProxy是一个开放式的HTTP代理服务器. github: https://github.com/alibab ...

  10. Cannot open channel to 3 at election address :3888 java.net.ConnectException: Connection refused (Connection refused)

    关于Linux中搭建分布式时可能遇到的问题 这个问题来自于今天安装zookeeper时踩的一个大坑,害的我花了一天时间.在搭建zookeeper的分布式时,往往要进行这样的配置: server.1=h ...