二十. 通过管道组合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. C中的C文件与h文件辨析

    简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词法与语法分析阶段 .编译阶段,首先编译成纯 ...

  2. HBase伪分布式安装及简单使用

    HBase是Hadoop的数据库,基于Hadoop执行.是一种NoSQL数据库. 特点:分布式.多版本号.面向列的存储模型.可以大规模的数据实时随机读写,可直接使用本地文件系统. 不适合:与关系型数据 ...

  3. Burp Suite安装&环境配置&启动&浏览器设置代理

    一.简述 Burp Suite是一款使用Java编写的,用于Web安全审计与扫描套件.它集成了诸多实用的小工具以完成http请求的转发/修改/扫描等,同时这些小工具之间还可以 互相协作,在BurpSu ...

  4. ios 不通过import 调用其他控制器的方法

    ios 开发过程中在不通过import 调用其他类的方法 //获取类名 Class controller = NSClassFromString(@"controller"); / ...

  5. js获取url传递参数值

    function request(paras)     {          var url = location.href;          var paraString = url.substr ...

  6. web-小知识点(随记)

    1.position:fixed:窗口定位的时候(在刷新页面时若未出现.得稍等一会的话,就直接把需要定位的内容写在<html>标签的首部.这样页面加载html的时候首先加载fixed定位的 ...

  7. 2.JAVA编程思想——一切都是对象

    一切都是对象 欢迎转载.转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040221 虽然以C++为基础,但 Java 是一种更纯粹的面 ...

  8. HDU 4883 TIANKENG’s restaurant Bestcoder 2-1(模拟)

    TIANKENG's restaurant Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/O ...

  9. IIS 下 部署nodejs 使用反向代理

    目标服务器:targetServer 配置反向代理的服务器:reveseProxServer iis应该是iis7及以上版本,才可以. 1.确定最终访问的网址:比如www.baidu.com  .ww ...

  10. iOS 常用图尺寸 汇总

    iCON 准备一张1024x1024尺寸的图,打开链接 http://www.atool.org/ios_logo.php 在线批量生成各种尺寸的图片 启动图LaunchImage 640x960 2 ...