一、ps命令介绍

  Linux系统中会运行各种各样的进程,如果要对进程进行监控,首先必须了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本的进程查看命令,使用该命令可以看到有哪些进程正在运行,并且可以看到进程的运行状态进程是否结束进程有没有僵死哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到。ps是显示瞬间进程的状态,并不动态连续,如果想对进程进行实时监控应该用top命令。ps命令的格式为:

ps [选项]

ps命令常用的选项参数有:

选项 功能
-A 显示所有的进程,跟-e的效果相同
-a 显示现行终端机下的所有进程,包括其他用户的进程
-u 显示当前用户的进程状态
-x 通常与 a 这个参数一起使用,可列出较完整信息
-l 较长、较详细的将该PID的信息列出
-j 工作的格式(jobs format)
-f 做一个更为完整的输出

由于ps命令支持的系统类型相当的多,所以它的参数多的离谱,而且有没有加上 - 差很多,所以只需要记住常用的几个命令即可。

二、ps使用实例

【例1】较长、较详细的将属于本次登入用户的进程列出来

➜  ~ ps -l
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1001 1702969 1702967  0  80   0 - 11484 -      pts/1    00:00:01 zsh
0 R  1001 1710433 1702969  0  80   0 -  7460 -      pts/1    00:00:00 ps

各个表头的含义为:

  • F:代表这个进程的flag,如果是4,则代表使用者为 super user
  • S:代表这个进程的状态stat
  • UID:代表执行者的userId
  • PID:进程的id
  • PPID:父进程的id
  • C:占用CPU资源的百分比
  • PRI:指进程的执行优先级(Priority的简写),其值越小越早被执行
  • NI:代表进程的nice值,其表示进程可被执行的优先级的修正数值
  • ADDR:代表进程的地址,它指出该进程在内存的哪个部分,如果是个正在运行的程序,一般都是"-"
  • SZ:占用的内存大小
  • WCHAN:判断当前进程是否正在运行,若为"-",则代表正在运行
  • TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
  • TIME:占用CPU的时间
  • CMD:所下达的指令名称

【例2】列出当前内存中的所有进程

➜  ~ ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0 204676  7012 ?        Ss   Jul07   6:37 /sbin/init nokaslr
root           2  0.0  0.0      0     0 ?        S    Jul07   0:07 [kthreadd]
root           4  0.0  0.0      0     0 ?        I<   Jul07   0:00 [kworker/0:0H]
root           6  0.0  0.0      0     0 ?        I<   Jul07   0:00 [mm_percpu_wq]
root           7  0.0  0.0      0     0 ?        S    Jul07   7:03 [ksoftirqd/0]
root           8  0.0  0.0      0     0 ?        I    Jul07  54:18 [rcu_sched]
root           9  0.0  0.0      0     0 ?        I    Jul07   0:00 [rcu_bh]
......
......

各个表头的含义为:

  • USER:表示该进程属于哪个用户
  • PID:进程id
  • %CPU:该进程占用CPU资源的百分比
  • %MEM:该进程占用内存的百分比
  • VSZ:该进程使用掉的虚拟内存量 (Kbytes)
  • RSS:该进程占用的固定的内存量 (Kbytes)
  • TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
  • STAT:代表该进程目前的状态,主要的状态有:
    • R:该进程正在运行
    • S:该进程正在休眠,但可被某些信号(signal)唤醒
    • D:无法中断的休眠状态(通常为IO进程)
    • T:该进程已经停止
    • Z:僵死状态,该进程应该已经终止,但是其父进程却无法正常的终止它,造成zombie(疆尸)程序的状态
    • W:等待状态,等待内存的分配
    • <:高优先级的进程
    • N:低优先级的进程
  • START:该进程被触发启动的时间
  • COMMAND:该进程的实际指令

【例3】查看指定进程,如查看php进程:

# ps -ef | grep php
root       794     1  0  2020 ?        00:00:52 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data   951   794  0  2020 ?        00:24:15 php-fpm: pool www
www-data   953   794  0  2020 ?        00:24:14 php-fpm: pool www
www-data   954   794  0  2020 ?        00:24:29 php-fpm: pool www
...