Linux 命令 ps

Posted by Tillend on March 27, 2019

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。

ps命令列出的是当前进程的快照,即当前的进程情况。若需要动态显示进程信息,则可使用top命令

Linux进程状态

在Linux系统上,进程有5种状态:

  • 运行(正在运行或在运行队列中等待)
  • 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps命令参数

详细命令参数见ps --help a

  • -A 列出所有的进程
  • -w 显示加宽可以显示较多的资讯
  • -au 显示较详细的资讯
  • -aux 显示所有(包含其他使用者的)进程

au(x) 输出格式 : USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的CPU使用率
  • %MEM: 占用的内存使用率
  • VSZ: 占用的虚拟内存大小
  • RSS: 占用的内存大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:
    • D: 不可中断的静止 (通常为 I/O 动作)
    • R: 正在执行中
    • S: 静止状态
    • T: 暂停执行
    • Z: 不存在但暂时无法消除
    • w: 没有足够的内存分页可分配
    • <: 高优先序的行程
    • N: 低优先序的行程
    • L: 有内存分页分配并锁在内存内 (实时系统或 I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND: 所执行的指令

ps使用实例

aux

ps aux,显示当前所有进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@vultr ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6  43408  3028 ?        Ss   Feb12   0:54 /usr/lib/systemd/systemd --system --deserialize 17
root         2  0.0  0.0      0     0 ?        S    Feb12   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Feb12   0:34 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Feb12   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    Feb12   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    Feb12   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        R    Feb12   1:09 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<   Feb12   0:00 [lru-add-drain]
root        11  0.0  0.0      0     0 ?        S    Feb12   0:24 [watchdog/0]
root        13  0.0  0.0      0     0 ?        S    Feb12   0:00 [kdevtmpfs]
root        14  0.0  0.0      0     0 ?        S<   Feb12   0:00 [netns]
root        15  0.0  0.0      0     0 ?        S    Feb12   0:01 [khungtaskd]
root        16  0.0  0.0      0     0 ?        S<   Feb12   0:00 [writeback]
root        17  0.0  0.0      0     0 ?        S<   Feb12   0:00 [kintegrityd]
root        18  0.0  0.0      0     0 ?        S<   Feb12   0:00 [bioset]
root        19  0.0  0.0      0     0 ?        S<   Feb12   0:00 [bioset]
root        20  0.0  0.0      0     0 ?        S<   Feb12   0:00 [bioset]
root        21  0.0  0.0      0     0 ?        S<   Feb12   0:00 [kblockd]

axjf

ps -axjf,以进程树的方式显示当前所有进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@vultr ~]# ps -axjf
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    2 13018     0     0 ?           -1 S        0   0:00  \_ [kworker/0:0]
    2 13065     0     0 ?           -1 S        0   0:00  \_ [kworker/0:1]
    0     1     1     1 ?           -1 Ss       0   0:54 /usr/lib/systemd/systemd --system --deserialize 17
    1  1260  1260  1260 ?           -1 Ss       0  14:08 /usr/lib/systemd/systemd-journald
    1  1281  1281  1281 ?           -1 Ss       0   0:00 /usr/lib/systemd/systemd-udevd
    1  1486  1486  1486 ?           -1 Ssl    999   0:01 /usr/lib/polkit-1/polkitd --no-debug
    1  1489  1489  1489 ?           -1 Ss       0   0:06 /usr/lib/systemd/systemd-logind
    1  1505  1505  1505 ?           -1 Ss      81   0:04 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-acti
    1  1543  1535  1535 ?           -1 S      998   0:07 /usr/sbin/chronyd
    1  1630  1630  1630 tty1      1630 Ss+      0   0:00 /sbin/agetty --noclear tty1 linux
    1  1655  1655  1655 ?           -1 Ssl      0   0:03 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
    1  2731  2731  2731 ?           -1 Ssl      0   9:28 /usr/sbin/rsyslogd -n
    1  2732  2732  2732 ?           -1 Ss       0   2:37 /usr/sbin/sshd -D
 2732 13041 13041 13041 ?           -1 Ss       0   0:00  \_ sshd: root@pts/1
13041 13043 13043 13043 pts/1    13068 Ss       0   0:00      \_ -bash
13043 13068 13068 13043 pts/1    13068 R+       0   0:00          \_ ps -axjf

参考资料:

  1. Linux:PS命令详解与使用
  2. Linux ps命令
  3. linux常用命令:ps命令