top命令
top命令用于显示当前系统中所有的任务,结合pidof能够满足比较常用的需求。
网上有说法top就是读取/proc/stat /proc/$PID/stat相关的信息,基本认同吧。
画不多说,直接在应用场景中介绍参数
//利用pidof得到进程名的进程号,-p参数可以指定top只显示该进程号的信息
#top -p `pidof process-name` //process-name对应一个进程号
#top -p `pidof process-name |sed 's/ /,/g'` //对应多个进程号,将空格换成','
//对于多线程程序,可使用-H参数查看每个线程的情况,可以知道有多少个线程被创建
#top -H -p `pidof process-name`
在top显示过程中,可以使用一些交互命令完成一些参数的功能
<空格>:立即刷新
c:切换显示命令名称和完整命令行
M:根据使用内存大小进行排序
R:reverse,颠倒排序顺序
1:数字1,显示多CPU信息
W:将当前设置写入~/.toprc文件中,这是写top配置文件的推荐方法
top命令你给包含许多重要信息,主要有:
VIRT:进程占的虚拟内存大小,默认单位:KB
RES :进程实际使用内存大小,默认单位:KB
SHR :进程使用的共享内存,默认单位:KB
S :进程状态(s/r/z)
默认情况下,无法通过管道将top的显示结果被直接利用。
-b(batch mode批处理模式)能够将top的结果输出到管道或文件。
//可以将指定程序的结果grep出来,默认1s输出一次
#top -b -p `pidof process-name` |grep process-name
#top -b -d 2 -p `pidof process-name` |grep process-name //-d 2设置2s刷新一次
#top -b -n 2 -p `pidof process-name` |grep process-name //-n 2设置输出2次就退出
实际问题
如果需要查看进程目前运行在那个逻辑CPU上,通过top同样可以完成。
1.如果你的top显示结果中已存在列名为:”P”的数据列。那么这列就表示当前进程最近一次使用的逻辑CPU编号。
2.如果没有1中的数据,则按f,再按j,然后按空格退出就看到#P的列。按大写W将配置改动写回,下次使用top时,就会默认显示该列信息。
wall
如果想通知所有登陆到同一台机器上的用户一个消息的话,可以通过命令wall发送一条给所有终端用户的广播。
#wall 'message you want to send'