进程监控是 Unix/Linux 系统管理中一个非常重要的组成部分。它可以监控进程状态、进程的 CPU 利用率等信息,并且可以在发现进程出现异常情况的时候,发送告警信息给系统管理员或者做出指定的反应。我们可以使用系统进程监控信息进行合理的进程调度从而优化系统性能,或者根据这些信息调整系统的行为。
不同的操作系统监控进程的命令可能略有不同。本文将介绍 Unix/Linux 操作系统进程管理命令及相关信息,并论述 Unix/Linux 操作系统上进程监控的自动化脚本实现。
进程是操作系统用于控制系统资源使用的实体。Unix/Linux 进程管理相关的命令主要有以下几个,在后面的脚本实现中会用到部分命令。
ps 命令:该命令是最基本同时也是非常强大的进程查看命令,用于报告进程标识、用户、CPU 时间消耗以及其他属性。利用它可以确定有哪些进程正在运行及运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。ps 命令可以监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入 / 输出设备进行通信的,如果需要检测其情况,可以使用 ps 命令。
单独使用 ps 命令所看到的进程列表,都是在前台执行的进程,但并非所有进程都在前台执行,也有不少进程隐藏在后台执行。使用命令 ps -e 可以显示所有进程。
top 命令:Linux 使用 top 命令来显示 CPU 占用率为前几位的进程。该命令可以按 CPU 使用率、内存使用率、执行时间对任务进行排序,而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。top 主要字段的含义如下:
表 1. top 字段含义
列名 含义
PID 进程 ID
USER 进程所有者的用户名
PR 任务优先级
NI nice 值。数值越小表示优先级越高,数值越大表示优先级越低
VIRT 进程使用的虚拟内存总量,单位:kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位:kb。RES=CODE+DATA
SHR 共享内存大小,单位:kb
S 进程状态。
D= 不可中断的睡眠状态
R= 运行
S= 睡眠
T= 跟踪 / 停止
Z= 僵尸进程
%CPU 上次更新到现在的 CPU 时间占用百分比
TIME+ 进程使用的 CPU 时间总计,精确到 1/100 秒
COMMAND 命令名 / 命令行
topas 命令:AIX 使用 topas 命令在字符终端上报告有关本地系统上的活动的至关重要的统计信息,包括显示 CPU 占用率为前几位的进程。topas 命令以缺省的两秒间隔从系统中提取并显示统计信息。通过命令 topas -P 可以进入 topas 的 process 子部分,显示活动进程的列表。各进程将按它们在监视间隔期间的 CPU 使用率进行排序。topas 针对每个进程所显示的字段含义如下:
表 2. topas 字段含义
列名 含义
Name 在该进程中执行的可执行程序的名称。此名称将剥离任何路径
名称和参数信息,并将长度截断为 9 个字符。
Process ID 进程 ID
% CPU Utilization 该进程在监视间隔期间的平均 CPU 利用率。在第一次显示某个进
程时,此值是该进程在生存期中的平均 CPU 利用率。
Paging Space Used 分配给该进程的分页空间大小。可将这视为该进程的内存占用空间
大小,但是不包括用于保存可执行程序及其依赖的任何共享库的内存。
Process Owner 拥有该进程的用户的用户名