首页 > 代码库 > ps命令常用选项参数详解

ps命令常用选项参数详解

PS命令是什么

ps命令能够给出当前系统中进程的快照。它能捕获系统在某一时间的进程状态。如果想要不断更新查看这个状态,可以配合watch命令或使用top命令。
ps命令支持三种使用的语法格式

  1. UNIX 风格:选项可以组合在一起,并且选项前必须有"-"连字符。

  2. BSD 风格 :选项可以组合在一起,但是选项前不能有"-"连字符。

  3. GNU 风格 :长选项,选项前需要有两个"-"连字符。

ps命令基本选项及参数释义

a:显示现行终端机下的所有程序,包括其他用户的程序。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
e:列出程序时,显示每个程序所使用的环境变量。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
g:显示现行终端机下的所有程序,包括群组领导者的程序。
h:不显示标题列。
u:以用户为主的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
r:只列出现行终端机正在执行中的程序。
v:采用虚拟内存的格式显示程序状况
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
-c:显示CLS和PRI栏位。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:显示所有程序。
-f:显示UID,PPIP,C与STIME栏位。
-H:显示树状结构,表示程序间的相互关系。
-u<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
-j:采用工作控制的格式显示程序状况
-l或l:采用详细的格式来显示程序状况。
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。

使用基本的ps命令,在执行之后的结果如下

[root@localhost ~]# ps
   PID TTY          TIME CMD
 15422 pts/1    00:00:00 bash
 16511 pts/1    00:00:00 ps

结果会默认显示4列信息。

  • PID:运行命令的进程编号。

  • TTY:命令所运行的终端。tty1 - tty6 是本机登入者,pts/0等为网络连接主机的程序。

  • TIME:运行着改命令所占用的CUP处理时间。

  • CMD:该进程所运行的命令。

将目前属于自己本次登入的PID与相关信息列示出来

[root@localhost ~]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  15422  15406  0  80   0 - 30202 wait   pts/1    00:00:00 bash
0 R     0  16520  15422  0  80   0 - 37233 -      pts/1    00:00:00 ps
  • F:这个程序的旗标(flag)4,表示使用者为superuser。

  • S:这个程序的状态(STAT)
    R:正在运作或是被运作。
    S:正在睡眠中,可被讯号唤醒。
    T:正在侦测或者停止。
    Z:已经停止,但副程序无法正常终止。造成zombie(僵尸)程序状态

  • UID:痴行者身份

  • C:CPU使用资源百分比

  • PRI:进程的执行优先权(Priority),值越小越优先

  • NI:进程的nice值,其表示进程可被执行的优先级的修正数值。

  • ADDR:内核函数,指出改程序在内存的哪个部分。如果是执行的程序,则为"-"

  • SZ:使用的内存大小

  • WCHAN:目前这个程序是否正在运行,"-"表示正在运行。

列出目前所有正在内存当中的程序

[root@localhost ~]# ps -ax     0     0 ?        S    06:25   0:00 [scsi_eh_0]
   PID TTY      STAT   TIME COMMAND
     1 ?        Ss     0:15 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
     2 ?        S      0:00 [kthreadd]
     3 ?        S      0:01 [ksoftirqd/0]
     5 ?        S<     0:00 [kworker/0:0H]
     6 ?        S      0:04 [kworker/u256:0]
     7 ?        S      0:02 [migration/0]
     8 ?        S      0:00 [rcu_bh]
     9 ?        S      0:17 [rcu_sched]
    10 ?        S      0:00 [watchdog/0]

-USER:进程属于哪个使用者

  • VSZ:占用虚拟内存

  • RSS:占用固定内存

  • START:程序被触发启动的时间。

  • TIME:改程序实际使用CPU运作的时间。

  • COMMAND:改程序实际指令

常用选项组合

查看全部进程ps -ax

[root@localhost ~]# ps -ax
   PID TTY      STAT   TIME COMMAND
     1 ?        Ss     0:15 /usr/lib/systemd/systemd --switched-root --system --d
     2 ?        S      0:00 [kthreadd]
     3 ?        S      0:01 [ksoftirqd/0]
     5 ?        S<     0:00 [kworker/0:0H]
     6 ?        S      0:04 [kworker/u256:0]
     7 ?        S      0:02 [migration/0]
     8 ?        S      0:00 [rcu_bh]

根据用户过滤进程ps -u root

[root@localhost ~]# ps -u root
   PID TTY          TIME CMD
     1 ?        00:00:15 systemd
     2 ?        00:00:00 kthreadd
     3 ?        00:00:01 ksoftirqd/0
     5 ?        00:00:00 kworker/0:0H
     6 ?        00:00:04 kworker/u256:0
     7 ?        00:00:02 migration/0
     8 ?        00:00:00 rcu_bh


通过CPU和内存过滤进程ps -aux

[root@localhost ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193628  6800 ?        Ss   06:25   0:15 /usr/lib/system
root          2  0.0  0.0      0     0 ?        S    06:25   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    06:25   0:01 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   06:25   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    06:25   0:04 [kworker/u256:0
root          7  0.0  0.0      0     0 ?        S    06:25   0:02 [migration/0]
root          8  0.0  0.0      0     0 ?        S    06:25   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    06:25   0:17 [rcu_sched]


根据线程来过滤进程ps -L 3223\

[root@localhost ~]# ps -L 3223
   PID    LWP TTY      STAT   TIME COMMAND
  3223   3223 ?        Sl     0:00 /usr/libexec/ibus-x11 --kill-daemon
  3223   3229 ?        Sl     0:00 /usr/libexec/ibus-x11 --kill-daemon
  3223   3230 ?        Sl     0:00 /usr/libexec/ibus-x11 --kill-daemon


树形显示进程ps -axjf``pstree\

[root@localhost ~]# ps -afjx
  PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND
     0      2      0      0 ?            -1 S        0   0:00 [kthreadd]
     2      3      0      0 ?            -1 S        0   0:01  \_ [ksoftirqd/0]
     2      5      0      0 ?            -1 S<       0   0:00  \_ [kworker/0:0H]
     2      6      0      0 ?            -1 S        0   0:04  \_ [kworker/u256:0]
     2      7      0      0 ?            -1 S        0   0:02  \_ [migration/0]
     2      8      0      0 ?            -1 S        0   0:00  \_ [rcu_bh]
     2      9      0      0 ?            -1 S        0   0:17  \_ [rcu_sched]
     2     10      0      0 ?            -1 S        0   0:00  \_ [watchdog/0]
     2     11      0      0 ?            -1 S        0   0:00  \_ [watchdog/1]
     2     12      0      0 ?            -1 S        0   0:01  \_ [migration/1]
     2     13      0      0 ?            -1 S        0   0:02  \_ [ksoftirqd/1]
     2     16      0      0 ?            -1 S        0   0:00  \_ [watchdog/2]
     2     17      0      0 ?            -1 S        0   0:00  \_ [migration/2]
     2     18      0      0 ?            -1 S        0   0:01  \_ [ksoftirqd/2]
[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─2*[dhclient]
        │                └─2*[{NetworkManager}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}


手工筛选信息ps -eo pid,user,args

[root@localhost ~]# ps -eo pid,user,args
   PID USER     COMMAND
     1 root     /usr/lib/systemd/systemd --switched-root --system --deserialize 21
     2 root     [kthreadd]
     3 root     [ksoftirqd/0]
     5 root     [kworker/0:0H]
     6 root     [kworker/u256:0]
     7 root     [migration/0]
     8 root     [rcu_bh]
     9 root     [rcu_sched]
    10 root     [watchdog/0]
    11 root     [watchdog/1]


使用watch实时监控进程状态watch -n1 ‘ps -aux‘

[root@localhost ~]# watch -n1 ‘ps -aux‘
Every 1.0s: ps -aux                                                                            Sun Jul  9 20:20:39 2017

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193628  6800 ?        Ss   06:25   0:15 /usr/lib/systemd/systemd --switched-root --system --d
root          2  0.0  0.0      0     0 ?        S    06:25   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    06:25   0:01 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   06:25   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    06:25   0:04 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    06:25   0:02 [migration/0]
root          8  0.0  0.0      0     0 ?        S    06:25   0:00 [rcu_bh]


本文出自 “冬至灵思陨” 博客,请务必保留此出处http://wangzhihao.blog.51cto.com/9506194/1945713

ps命令常用选项参数详解