当系统运行较慢或我们的服务访问较慢时,我们会查看系统进程运行的状态,来查找原因,本文介绍一下几个与进程查看相关的命令以及其用法:
top:动态查看进程的变化,top可以持续检测进程运行的状态,在默认情况下,每次更新进程资源的时间为3秒,不过,可以使用-d来进行修改。
top命令用法:top[-d 数字];top [-bnp]
参数:
-d:后面可以接秒数,就是整个进程界面更新的秒数,默认是3秒;
-b:以批次的方式执行top,通常会搭配数据流重定向来将批处理的结果输出成为文件;
-n#:显示多少批次,和-b一起使用
-p:查看指定PID的进程信息・
在top执行过程中可以使用的按键命令:
?:显示在top当中可以输入的按键命令;
k:给予某个PID一个进程号
r:给予某个PID重新制定一个nice值
top主要分为两个界面,上面的界面为整个系统的资源使用状态,基本上总共有六行,如图所示:
第一行(top...):可以按"l"键取消显示或显示此行信息;这一行显示的信息分别为
21:58:16 目前的系统时间
up 29 min 开机到目前为止所经过的时间
2users 已经登录系统的用户人数
load average 系统在1,5,15分钟的平均工作负载,代表的是过去1分钟、5分钟、15分钟平均cpu上的等待进程数
第二行(Tasks...):显示的是目前进程的总量与个别进程在什么状态。比较需要注意的是最后的zombie那个数值,如果不是0,需要看看到底是哪个process变成僵尸了。
第三行(%Cpu):显示的是CPU的整体负载。其中,us代表用户空间占用CPU百分比;sy代表系统空间占用CPU百分比;ni代表用户进程空间内改变过优先级的进程占用CPU百分比;id代表空闲空间百分比;wa代表等待进程占用CPU百分比;hi代表处理硬件中断占用CPU百分比;si代表处理软件中断占用CPU百分比;st代表被虚拟化程序占用的CPU百分比。需要注意的是wa,这个选项代表的是I/Owait,通常系统会变慢都是I/O产生的问题比较大。因此,这里需要注意这个选项耗用CPU的资源。如果是多内核的设备,可以按下数字"1"来切换成不同CPU的负载率。注意:第二行和第三行的内容可以按"t"键取消显示或改变显示方式
第四行与第五行:表示目前的物理内存与虚拟内存的使用情况,要注意的是swap的使用量要尽量少,如果swap被大量使用,表示系统的物理内存不足。可以按下"m"键改变显示方式或取消显示;
第六行:显示各进程的状态;
PID:每个进程的ID;
USER:该进程所属的用户;
PR:进程的优先执行顺序,越小越早被执行
NI:nice值。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量。VIRT=SWAP+RES
RES:进程使用的、未被换出的物理内存大小。RES=CODE+DATA
SHR:共享内存大小
S:代表进程的状态
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:sessionleader
%CPU:进程运行占用CPU百分比
%MEM:进程占用内存百分比
TIME+:进程使用的CPU时间总计
COMMAND:命令名
top默认按CPU使用率排序,如果要按内存使用率排序,可以按下"M";如果要按占用CPU时间排序可以按下"T";如果按进程号排序可以按下"N";按下z则可以高亮显示颜色;如果要返回按CPU使用率排序可以按下"P";如果要退出top可以按下"q"。
htop:与top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。如图所示是htop的显示结果:
上面左上角显示CPU、内存、交换区的使用情况,右边显示任务、负载、开机时间,下面就是进程实时状况。
下面是 F1~F10 的功能和对应的字母快捷键。
F1:查看htop的使用帮助,用h或?也可以显示此功能,如图所示:
F2:设置htop,如图所示:可以设置左上角和右上角显示的内容以及颜色设置等,使用S也可以显示此功能;
F3:搜索进程,使用/也可以显示此功能,如图所示:
F4:增量进程过滤器,相当于关键字搜索,不区分大小写,也可以用\打开此功能;如图所示:
F5:显示属性结构,和pstree差不多,也可以用t打开此功能:
F6:选择排序方式,也可以使用<或>来选择;
F7:可减少nice值,这样就可以提高对应进程的优先级,也可以使用[实现此功能
F8:可增加nice值,这样就可以降低对应进程的优先级,也可以使用]实现此功能;
F9:可对进程传递信号,也可以使用k键实现此功能;
F10:退出htop,也可以和top一样使用q;
命令行选项:
-C 使用一个单色的配色方案
-d 设置延迟更新时间,单位秒
-h 显示htop 命令帮助信息
-u 只显示一个给定的用户的过程
-p 只显示给定的PIDs
-s 依此列来排序
-v 显示版本信息
ps命令:ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。ps是通过查看/proc中的信息来查看内核信息的。
选项:
a:所有与终端相关的进程;
x:所有与终端有关的进程;
u:以用户为中心组织进程状态信息显示
常用组合:aux
USER:该 process 属于那个使用者账号的
PID :该 process 的号码
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?
STAT:该程序目前的状态,主要的状态有
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间
COMMAND:该程序的实际指令
-e:显示所有进程
-f:显示完整格式的进程信息;
. 常用组合:-ef
-F:显示完整格式的进程信息;
-H:以层级结构来显示进程的相关信息;
常用组合:eFH
o filed,filed2,... 自定义要显示的字段;比如结果中只显示进程号和命令:
dstat命令:
dstat非常强大,可以实时的监控cpu、磁盘、网络、IO、内存等使用情况。
直接使用dstat,默认使用的是-cdngy参数,分别显示cpu、disk、net、page、system信息,默认是1秒显示一条信息。可以在最后指定显示一条信息的时间间隔,如dstat 5是每5秒显示一条,dstat 5 3表示每5秒显示一条,一共显示3条。如图所示为dstat默认的输出结果:
常用选项:
-c,--cpu:只显示cpu相关信息;
-d,--disk:显示磁盘的相关信息
-g:显示page相关的速率数据
-m:Memory的相关统计数据;
-n:Interface的相关统计数据;
-p:显示process的相关统计数据
-r:显示io请求的相关的统计数据
-s:显示swapped的相关统计数据