Linux 为我们提供了一个名为 ps 的实用程序,用于查看与系统上的进程相关的信息,它是 Process Status 的缩写
这份 ps 命令备忘清单的快速参考列表,包含常用选项和示例。
$ ps [options]
命令运行示例,列出当前 shell 中的所有进程:
$ ps
  PID TTY          TIME CMD
12330 pts/0    00:00:00 bash
21621 pts/0    00:00:00 ps
| :-- | -- | 
|---|---|
| PID | 唯一的进程 ID | 
| TTY | 用户登录的终端类型 | 
| TIME | 进程运行的 CPU 数量,以分钟和秒为单位 | 
| CMD | 启动进程的命令的名称 | 
注意:有时当我们执行 ps 命令时,它显示 TIME 为 00:00:00
ps 命令支持 3 种使用语法风格
Unix 可以分组并以连字符开头BSD 可以分组但前面没有连字符GNU 长选项,前面有双连字符| Option | Function | 
|---|---|
| ps -ef / -aux | 以完整格式列出当前正在运行的进程 | 
| ps -ax | 列出当前正在运行的进程 | 
| ps -u <username> | 列出特定用户的进程 | 
| ps -C <command> | 列出给定命令的进程 | 
| ps -p <PID> | 列出具有给定 PID 的进程 | 
| ps -ppid <PPID> | 列出具有给定 ppid 的进程 | 
| pstree | 在层次结构中显示过程 | 
| ps -L | 列出特定进程的所有线程 | 
| ps --sort pmem | 查找内存泄漏 | 
| ps -eo | 显示安全信息 | 
| ps T | 允许您仅选择与此终端关联的所有进程 | 
| ps -U root -u root u | 显示由 root 运行的进程 | 
要使用标准语法查看系统上的每个进程:
$ ps -e  # 列出所有进程
$ ps -ef
$ ps -eF
$ ps -ely
要使用 BSD 语法查看系统上的每个进程:
$ ps ax   # 以 BSD 格式列出所有进程
$ ps axu
$ ps -ejH
$ ps axjf
$ ps -q 42 -o comm=
$ ps -eLf
$ ps axms
$ ps x
$ ps -eo euser,ruser,suser,fuser,f,comm,label
$ ps axZ
$ ps -eM
查看以 root 身份运行的每个进程(真实且有效的 ID)用户格式:
$ ps -U root -u root u
$ ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
$ ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
$ ps -Ao pid,tt,user,fname,tmout,f,wchan
$ ps -C syslogd -o pid=
$ ps u
USER   PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
refs 11400   1.1  0.0 34853544   5816 s025  Ss   Tue02PM   0:02.82 /bin/zsh --login
refs 34561   0.6  0.0 34822644   3152 s016  S+   14Dec22 115:59.28 zsh (figterm)
refs 21377   0.5  0.0 34973972   7076 s028  S+   Wed09AM   4:32.19 zsh (figterm)
refs 78881   0.5  0.0 34843484   3256 s015  S+   17Dec22  90:27.10 zsh (figterm)
$ ps f
$ ps -F
$ ps v
$ ps -u user[name or id]
# OR
$ ps --user user[name or id]
$ ps -u root
按真实用户 ID 或名称显示进程
$ ps -U user[name or id]
# OR
$ ps --User user[name or id]
$ ps -G group[name or id]
# OR
$ ps --Group group[name or id]
$ ps h
  PID   TT  STAT      TIME COMMAND
33790 s000  S+   104:10.45 zsh (figterm)
33800 s001  Ss+    0:02.76 /bin/zsh --login
77830 s002  S+    90:22.51 zsh (figterm)
77840 s003  Ss     0:00.66 /bin/zsh --login
$ ps e
  PID TTY      STAT   TIME COMMAND
  886 tty2     Ssl+   0:00 /usr/li....
$ ps --headers -A
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
$ ps --forest -A
   PID TTY          TIME CMD
     2 ?        00:00:00 kthreadd
     3 ?        00:00:00  \_ rcu_gp
     4 ?        00:00:00  \_ rcu_par_gp
   960 ?        00:00:00 \_ goa-identity-se
  1118 ?        00:00:00 \_ at-spi-bus-laun
  1124 ?        00:00:00 | \_ dbus-daemon
您可以使用 -H 选项打印进程层次结构
$ ps -H -A
PID TTY          TIME CMD
  2 ?        00:00:00 kthreadd
  3 ?        00:00:00   rcu_gp
1832 ?        00:00:37     gnome-terminal-
1840 pts/0    00:00:00       bash
1925 pts/1    00:00:00       bash
2867 pts/1    00:00:00         su
2868 pts/1    00:00:00           bash