摘自《鸟哥的Linux私房菜》-第十七章、程序管理与 SELinux 初探
PS(1)
将某个时间点的程序运行情况撷取下来
用法
ps [opt]
选项与参数:
-A :所有的 process 均显示出来,与 -e 具有同样的效用;
-a :不与 terminal 有关的所有 process ;
-u :有效使用者 (effective user) 相关的 process ;
x :通常与 a 这个参数一起使用,可列出较完整资讯。
输出格式规划:
l :较长、较详细的将该 PID 的的资讯列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
常用选项
ps -l : 仅观察自己的 bash 相关程序
[scu@croot ~]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 500 3568 3567 0 80 0 - 2861 wait pts/0 00:00:00 bash
0 R 500 3633 3568 0 80 0 - 2816 - pts/0 00:00:00 ps
-
F:代表这个程序旗标 (process flags),说明这个程序的总结权限,常见号码有:
- 若为 4 表示此程序的权限为 root ;
- 若为 1 则表示此子程序仅进行复制(fork)而没有实际运行(exec)。
-
S:代表这个程序的状态 (STAT),主要的状态有:
- R (Running):该程序正在运行中;
- S (Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
- D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>列印)
- T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
- Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。
- N (nice)低优先级任务
- s 进程是会话期首进程
- + 进程属于前台进程组
- | 进程是多线程的
- < 高优先级任务
UID/PID/PPID:代表『此程序被该 UID 所拥有/程序的 PID 号码/此程序的父程序 PID 号码』
C:代表 CPU 使用率,单位为百分比;
PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所运行的优先顺序,数值越小代表该程序越快被 CPU 运行。
ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪个部分,如果是个 running 的程序,一般就会显示『 - 』 / SZ 代表此程序用掉多少内存 / WCHAN 表示目前程序是否运行中,同样的, 若为 - 表示正在运行中。
TTY: 登陆者的终端机位置,若为远程登陆则使用动态终端介面 (pts/n);
TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运行的时间,而不是系统时间;
CMD:就是 command 的缩写,造成此程序的触发程序之命令为何。
ps aux : 列出目前所有的正在内存当中的程序
[root@croot scu]# ps aux | grep ^scu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
scu 3567 0.0 0.3 100496 1860 ? S 13:02 0:00 sshd: scu@pts/0
scu 3568 0.0 0.3 11444 1752 pts/0 Ss 13:02 0:00 -bash
- USER:该 process 属於那个使用者帐号的?
- PID :该 process 的程序识别码。
- %CPU:该 process 使用掉的 CPU 资源百分比;
- %MEM:该 process 所占用的实体内存百分比;
- VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
- RSS :该 process 占用的固定的内存量 (Kbytes)
- TTY :该 process 是在那个终端机上面运行,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登陆者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
- STAT:该程序目前的状态,状态显示与 ps -l 的 S 旗标相同 (R/S/T/Z)
- START:该 process 被触发启动的时间;
- TIME :该 process 实际使用 CPU 运行的时间。
- COMMAND:该程序的实际命令为何?
小贴士
僵尸程序: 应当终止运行释放内存,但却因为父程序未处理而驻扎在内存中的程序。