Linux ps 命令的常用选项(显示系统进程和进程状态的命令)

一、ps命令的作用:
1. 查看目前正在运行的进程
2. 查看进程是否结束
3. 查看有没有僵尸进程
4. 查看哪些进程占用了过多资源
......

二、ps命令的参数:
# ps -A #显示所有的进程,与# ps -e具有同样的效用
# ps -a #显示此用户的进程,但不包括其他用户的进程
# ps -u #以用户为主显示进程状态
# ps -x #通常与 a 这个参数一起使用,可列出较完整信息。
ps命令的参数还有很多,可以使用ps --help来尝试查看

三、ps命令的输出格式规划:
# ps -l #较长、较详细的将该PID的信息列出
# ps -j #工作的格式 (jobs format)
# ps -f #做一个更为完整的输出。
......
ps命令的输出格式还有很多,可以使用ps --help来尝试查看

四、ps命令输出信息解释
显示案例一:将目前属于这次用户登入的PID与相关信息列示出来
# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   7168   7166  0  80   0 - 28860 do_wai pts/0    00:00:00 bash
0 R     0   7185   7168  0  80   0 - 38309 -      pts/0    00:00:00 ps

以上相关信息的意义为:
F 代表这个程序的旗标 (flag),4代表使用者为superuser
S 代表这个程序的状态 (STAT)
UID 代表执行者身份
PID 进程的ID号
PPID 父进程的ID
C CPU使用的资源百分比
PRI指进程的执行优先权(Priority的简写),其值越小越早被执行
NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值
ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
SZ 使用掉的内存大小
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间
CMD 所下达的指令名称

显示案例二:列出目前所有的正在内存当中的程序
# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 125284  3772 ?        Ss   05:55   0:01 /usr/lib/syste
root          2  0.0  0.0      0     0 ?        S    05:55   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    05:55   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   05:55   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    05:55   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    05:55   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    05:55   0:00 [rcu_sched]

以上相关信息的意义为:
USER 该进程属于那个使用者账号
PID 该进程的进程ID号
%CPU 该进程使用掉的CPU资源百分比
%MEM 该进程所占用的物理内存百分比
VSZ 该进程使用掉的虚拟内存量(Kbytes)
RSS 该进程占用的固定的内存量(Kbytes)
TTY 该进程是在那个终端机上面运作,若与终端机无关,则显示 ?。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序
STAT 该程序目前的状态,主要的状态有
R 该程序目前正在运作,或者是可被运作
S 该程序目前正在睡眠当中,但可被某些讯号(signal)唤醒
T 该程序目前正在侦测或者是停止了
Z 该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START 该进程被触发启动的时间
TIME 该进程实际使用 CPU 运作的时间
COMMAND 该程序的实际指令

五、ps使用案例
案例一:Linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合
# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head


案例二:Linux下获取占用内存资源最多的10个进程,可以使用如下命令组合
# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head


案例说明:可以使用以下命令查使用内存最多的K个进程
# ps -aux | sort -k4nr | head -K 

说明:
head -K中,如果是显示10个进程,K=10,如果是显示3个进程,则K=3
ps -aux中,a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以开启的终端来区分
sort -k4nr中,k代表从第几个位置开始,后面的数字4即是其开始位置,结束位置如果没有,则默认到最后;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序
|为管道符号,将查询出的结果导到下面的命令中进行下一步的操作