8.2.5 Linux操作系统进程监控技术
Linux在进程监控方面同样出色,不仅可以通过图形用户界面的管理工具,还可以用命令方式显示进程相关信息。像“Windows的任务管理器”一样,在RedHat 9中可以通过单击“系统工具”→“系统监视器”,启动“系统监视器”,如图8-19所示。
图8-19 “系统监视器”对话框
Linux系统提供了ps、top等查看进程信息的系统调用,通过结合使用这些系统调用,可以清晰地了解进程的运行状态以及存活情况,从而采取相应的措施,来确保Linux系统的性能。ps是目前在Linux下最常见的进程状况查看命令,是随Linux版本发行的,安装好系统之后,用户就可以使用。这里以ps命令为例,ps命令是最基本同时也是非常强大的进程查看命令。利用它可以确定有哪些进程正在运行及运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。下面介绍一下ps命令的主要参数项的含义,如表8-2所示。
表8-2 ps命令的主要参数项说明
选 项 名 称 | 说 明 |
-A | 显示所有程序 |
a | 显示现行终端机下的所有程序,包括其他用户的程序 |
c | 列出程序时,显示每个程序真正的指令名称,而不包含路径、参数或常驻服务的标示 |
-e | 此参数的效果和指定“A”参数相同 |
e | 列出程序时,显示每个程序所使用的环境变量 |
f | 用ASCII字符显示树状结构,表达程序间的相互关系 |
-H | 显示树状结构,表示程序间的相互关系 |
-N | 显示所有的程序,除了执行ps指令终端机下的程序之外 |
s | 采用程序信号的格式显示程序状况 |
S | 列出程序时,包括已中断的子程序资料 |
-t<终端机编号> | 指定终端机编号,并列出属于该终端机的程序的状况 |
u | 以用户为主的格式来显示程序状况 |
x | 显示所有程序,不以终端机来区分 |
为了使大家对该命令的使用有更深刻的认识,这里给大家举几个例子进行说明。
1.示例一
ps命令可以监控后台进程的工作情况,因为后台进程是不和屏幕、键盘这些标准输入/输出设备进行通信的,如果需要检测其情况,可以使用ps?-el命令,输出内容如图8-20所示。
图8-20 “ps–el”命令显示的进程信息
关于输出信息项的含义,如表8-3所示。
表8-3 ps -el命令输出项标头含义说明
输 出 项 | 说 明 |
F | 用数值表示目前进程的状态 |
S | 用字符表示目前进程的状态 |
UID | 进程使用者的ID |
PID | PID表示进程标示符 |
C | 进程使用CPU的估算 |
PRI | 进程执行的优先级 |
NI | Nice的值,Nice可以降低进程执行的优先权 |
SZ | Virtual Size,进程在虚拟内存中的大小 |
WCHAN | 等待频道,当为Null时,表示进程正在执行,当进程在就绪时为Waiting for |
TTY | 表示该进程建立时所对应的终端,“?”表示该进程不占用终端 |
TIME | 进程已经执行的时间 |
CMD | 进程被执行的命令名称 |
2.示例二
通常,在查看进程的时候,最常用的命令是“ps aux”,有时为了查找特定的进程,也会加入grep参数,如“ps aux |grep init”输出信息如图8-21和图8-22所示。
图8-21 “ps aux”命令显示的进程信息
图8-22 “ps aux|grep init”命令显示的进程信息
关于输出信息项的含义,如表8-4所示。
表8-4 “ps aux | grep init”命令输出项标头含义说明
输 出 项 | 说 明 |
USER | 用户名 |
PID | PID表示进程标示符 |
输 出 项 | 说 明 |
%CPU | 当前使用的CPU百分比 |
%MEM | RSS与系统中全部可用页面的比率,因为RSS是包含共享内存在内的近似值,这个百分比也是近似值,所以可能超过内存总量。%MEM列的总和可能会超过100% |
VSZ | Virtual Size,进程在虚拟内存中的大小。包括所有映射的文件和设备,单位是千字节 |
RSS | 进程使用物理内存的近似值,单位是千字节 |
TTY | 表示该进程建立时所对应的终端,“?”表示该进程不占用终端 |
STAT | 进程状态。STAT中的字符的含义如下: “D”:不可中断 “R”:正在运行,或在队列中的进程 “S”:处于休眠状态 “T”:停止或被追踪 “Z”:僵尸进程 “W”:进入内存交换 “X”:死掉的进程 |
START | 进程运行的起始时间 |
TIME | 进程已经执行的时间。单位以CPU运行时间,min和s表示,来源于微态(用户+系统时间)。如果出现较大的值(大于几分钟),那么意味着进程已经运行了一段时间 |
COMMAND | 进程被执行的命令名称。COMMAND项是被删除过的以便于输出与终端窗口符合。用“ps auxw”命令来使得输出显示更宽,最多可显示132个字符 |
3.示例三
此外,还可以通过pstree命令查看Linux进程树。pstree命令以字符形式显示树状结构,清晰地表达了程序间的相互关系。如果不指定程序识别码或用户名称,则会把系统启动时的第一个程序视为基层,并显示之后的所有程序;若指定用户名称,便会以隶属该用户的第一个程序当做基层,然后显示该用户的所有程序。
下面,针对pstree选项进行说明,如表8-5所示。
表8-5 “pstree”命令主要参数项说明
选 项 名 称 | 说 明 |
-a | 显示每个程序的完整指令,包含路径、参数或是常驻服务的标示 |
-G | 使用VT100终端机的列绘图字符 |
c | 不使用精简标示法 |
-h | 列出树状图时,特别标明现在执行的程序 |
-H<程序识别码> | 此参数的效果和指定 |
选 项 名 称 | 说 明 |
-l | 采用长列格式显示树状图 |
-n | 用程序识别码排序。预设是以程序名称来排序 |
-p | 显示程序识别码 |
-u | 显示用户名称 |
–U | 使用UTF |
-V | 显示版本信息 |
如果要以长列格式显示树状图,并且显示每个进程的完整指令,则可以在命令行输入“pstree –a –l”,回车执行,输出内容如图8-23所示。
图8-23 “pstree –a –l”命令显示的进程信息
8.2.6 Linux操作系统进程终止技术
Linux操作系统也有结束进程的对应方法,在RedHat 9系统中,终止一个进程或正在运行的程序,一般是通过kill、killall、pkill等命令进行操作。
下面结合实例给大家具体介绍一下,这些命令是如何应用于具体的工作当中。首先,看一下kill命令,这里给大家介绍一个通用的查看命令帮助的方法,通常可以用“man命令”的方式来查看该命令的帮助信息,如查看kill命令帮助,则可以在终端命令窗口输入“man kill”,回车执行,显示如图8-24所示信息,可以输入“q”退出帮助信息查看。
图8-24 “kill”命令帮助
3.示例三
此外,还可以通过pstree命令查看Linux进程树。pstree命令以字符形式显示树状结构,清晰地表达了程序间的相互关系。如果不指定程序识别码或用户名称,则会把系统启动时的第一个程序视为基层,并显示之后的所有程序;若指定用户名称,便会以隶属该用户的第一个程序当做基层,然后显示该用户的所有程序。
下面,针对pstree选项进行说明,如表8-5所示。
表8-5 “pstree”命令主要参数项说明
选 项 名 称 | 说 明 |
-a | 显示每个程序的完整指令,包含路径、参数或是常驻服务的标示 |
-G | 使用VT100终端机的列绘图字符 |
c | 不使用精简标示法 |
-h | 列出树状图时,特别标明现在执行的程序 |
-H<程序识别码> | 此参数的效果和指定 |
选 项 名 称 | 说 明 |
-l | 采用长列格式显示树状图 |
-n | 用程序识别码排序。预设是以程序名称来排序 |
-p | 显示程序识别码 |
-u | 显示用户名称 |
–U | 使用UTF |
-V | 显示版本信息 |
如果要以长列格式显示树状图,并且显示每个进程的完整指令,则可以在命令行输入“pstree –a –l”,回车执行,输出内容如图8-23所示。
图8-23 “pstree –a –l”命令显示的进程信息
8.2.6 Linux操作系统进程终止技术
Linux操作系统也有结束进程的对应方法,在RedHat 9系统中,终止一个进程或正在运行的程序,一般是通过kill、killall、pkill等命令进行操作。
下面结合实例给大家具体介绍一下,这些命令是如何应用于具体的工作当中。首先,看一下kill命令,这里给大家介绍一个通用的查看命令帮助的方法,通常可以用“man命令”的方式来查看该命令的帮助信息,如查看kill命令帮助,则可以在终端命令窗口输入“man kill”,回车执行,显示如图8-24所示信息,可以输入“q”退出帮助信息查看。
图8-24 “kill”命令帮助信息
1.示例一
运行“ps aux | grep gnome”命令查看当前系统运行的进程名包含“gnome”的进程,可以看到,pid为“2151”的则是系统自带的“字典”应用程序,如图8-25所示,如果要将这个程序关闭,可以输入命令“kill 2151”,则关闭了“字典”程序(从界面上消失),再输入“ps aux | grep gnome”命令,查看“字典”程序已经不存在,如图8-26所示。
图8-25 “ps aux | grep gnome”输出信息
图8-26 “kill 2151”、“ps aux | grep gnome”命令输出信息
2.示例二
一个程序已经彻底关闭,如果kill不加信号强度(signal)没有办法退出,这时,最好的办法就是加信号强度9,后面指出要杀死的“僵尸”进程PID,例如,需要关闭“Emacs”,通过“ps aux”命令,可以查看到“Emacs”的PID为“1938”,先需要强制关闭该程序,可以输入“kill -9 1938”,如图8-27所示,命令执行完成以后,“Emacs”程序就会被关闭。
图8-27 “kill -9 1938”强制终止进程命令
3.示例三
当然,还可以通过应用killall命令来终止某一个程序或者进程,如要结束“文本编辑器”程序,可以输入“killall gedit”,回车执行,如图8-28所示,killall是通过命令空格正在运行的程序名来结束某个程序的,如果想获得更多的关于该命令的应用信息,请使用前面介绍的“man”命令。
图8-28 “killall gedit”终止文本编辑器命令
4.示例四
pkill和killall命令应用方法差不多,也是直接关闭运行中的程序。如果想关闭单个进程,请用kill命令,如要结束“文本编辑器”程序,可以输入“pkill gedit”,回车执行,如图8-29所示。pkill命令是通过命令空格正在运行的程序名来结束某个程序的,如果想获得更多的关于该命令的应用信息,请使用前面介绍的“man”命令。
图8-29 “pkill gedit”终止文本编辑器命令
(未完待续)
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。
相关链接:
精通软件性能测试与LoadRunner最佳实战 连载一
精通软件性能测试与LoadRunner最佳实战 连载二
精通软件性能测试与LoadRunner最佳实战 连载三
精通软件性能测试与LoadRunner最佳实战 连载四
精通软件性能测试与LoadRunner最佳实战 连载五