以下内容搬运自 《linx命令行与shell脚本大全(第三版)》
Linux系统中使用的GNU ps 命令支持3种不同类型的命令行参数:
Unix风格的参数,前面加单破折线;
BSD风格的参数,前面不加破折线;
GNU风格的长参数,前面加双破折线。
1.Unix风格的ps 命令参数
参数 | 描述 |
---|---|
-A | 显示所有进程 |
-N | 显示与指定参数不符的所有进程 |
-a | 显示除控制进程(session leader1 )和无终端进程外的所有进程 |
-d | 显示除控制进程外的所有进程 |
-e | 显示所有进程 |
-C cmdlist | 显示包含在 cmdlist 列表中的进程 |
-G grplist | 显示组ID在 grplist 列表中的进程 |
-U userlist | 显示属主的用户ID在 userlist 列表中的进程 |
-g grplist | 显示会话或组ID在 grplist 列表中的进程2 |
-p pidlist | 显示PID在 pidlist 列表中的进程 |
-s sesslist | 显示会话ID在 sesslist 列表中的进程 |
-t ttylist | 显示终端ID在 ttylist 列表中的进程 |
-u userlist | 显示有效用户ID在 userlist 列表中的进程 |
-F | 显示更多额外输出(相对-f 参数而言) |
-O format | 显示默认的输出列以及 format 列表指定的特定列 |
-M | 显示进程的安全信息 |
-c | 显示进程的额外调度器信息 |
-f | 显示完整格式的输出 |
-j | 显示任务信息 |
-l | 显示长列表 |
-o format | 仅显示由 format 指定的列 |
-y | 不要显示进程标记(process flag,表明进程状态的标记) |
-Z | 显示安全标签(security context)3 信息 |
-H | 用层级格式来显示进程(树状,用来显示父进程) |
-n namelist | 定义了WCHAN 列显示的值 |
-w | 采用宽输出模式,不限宽度显示 |
-L | 显示进程中的线程 |
-V | 显示ps 命令的版本号 |
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Oct02 ? 00:16:08 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 Oct02 ? 00:00:00 [kthreadd]
root 4 2 0 Oct02 ? 00:00:00 [kworker/0:0H]
root 6 2 0 Oct02 ? 00:02:13 [ksoftirqd/0]
root 7 2 0 Oct02 ? 00:00:17 [migration/0]
root 8 2 0 Oct02 ? 00:00:00 [rcu_bh]
root 9 2 0 Oct02 ? 04:05:38 [rcu_sched]
root 10 2 0 Oct02 ? 00:00:00 [lru-add-drain]
root 11 2 0 Oct02 ? 00:00:19 [watchdog/0]
root 12 2 0 Oct02 ? 00:00:18 [watchdog/1]
root 13 2 0 Oct02 ? 00:00:19 [migration/1]
root 14 2 0 Oct02 ? 00:01:41 [ksoftirqd/1]
root 16 2 0 Oct02 ? 00:00:00 [kworker/1:0H]
root 17 2 0 Oct02 ? 00:00:14 [watchdog/2]
UID :启动这些进程的用户。
PID :进程的进程ID。
PPID :父进程的进程号(如果该进程是由另一个进程启动的)。
C :进程生命周期中的CPU利用率。
STIME :进程启动时的系统时间。
TTY :进程启动时的终端设备。
TIME :运行进程需要的累计CPU时间。
CMD :启动的程序名称。
注意使用了-l 参数之后多出的那些列
F :内核分配给进程的系统标记。
S :进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵化,进程已结束但父进程已不存在;T代表停止)。
PRI :进程的优先级(越大的数字代表越低的优先级)。
NI :谦让度值用来参与决定优先级。
ADDR :进程的内存地址。
SZ :假如进程被换出,所需交换空间的大致大小。
WCHAN :进程休眠的内核函数的地址。
2.BSD风格的ps 命令参数
参数 | 描述 |
---|---|
T | 显示跟当前终端关联的所有进程 |
a | 显示跟任意终端关联的所有进程 |
g | 显示所有的进程,包括控制进程 |
r | 仅显示运行中的进程 |
x | 显示所有的进程,甚至包括未分配任何终端的进程 |
U userlist | 显示归 userlist 列表中某用户ID所有的进程 |
p pidlist | 显示PID在 pidlist 列表中的进程 |
t ttylist | 显示所关联的终端在 ttylist 列表中的进程 |
O format | 除了默认输出的列之外,还输出由 format 指定的列 |
X | 按过去的Linux i386寄存器格式显示 |
Z | 将安全信息添加到输出中 |
j | 显示任务信息 |
l | 采用长模式 |
o format | 仅显示由 format 指定的列 |
s | 采用信号格式显示 |
u | 采用基于用户的格式显示 |
v | 采用虚拟内存格式显示 |
N namelist | 定义在WCHAN 列中使用的值 |
O order | 定义显示信息列的顺序 |
S | 将数值信息从子进程加到父进程上,比如CPU和内存的使用情况 |
c | 显示真实的命令名称(用以启动进程的程序名称) |
e | 显示命令使用的环境变量 |
f | 用分层格式来显示进程,表明哪些进程启动了哪些进程 |
h | 不显示头信息 |
k sort | 指定用以将输出排序的列 |
n | 和WCHAN 信息一起显示出来,用数值来表示用户ID和组ID |
w | 为较宽屏幕显示宽输出 |
H | 将线程按进程来显示 |
m | 在进程后显示线程 |
L | 列出所有格式指定符 |
V | 显示ps 命令的版本号 |
$ ps l
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 500 3081 3080 20 0 4692 1432 wait Ss pts/0 0:00 -bash
0 500 5104 3081 20 0 4468 844 - R+ pts/0 0:00 ps l
VSZ :进程在内存中的大小,以千字节(KB)为单位。
RSS :进程在未换出时占用的物理内存。
STAT :代表当前进程状态的双字符状态码。
双字符状态码STAT能比Unix风格输出的单字符状态码更清楚地表示进程的当前状态
第一个字符采用了和Unix风格S 列相同的值,表明进程是在休眠、运行还是等待。第二个参数进一步说明进程的状态。
< :该进程运行在高优先级上。
N :该进程运行在低优先级上。
L :该进程有页面锁定在内存中。
s :该进程是控制进程。
l :该进程是多线程的。
+ :该进程运行在前台。
3.GNU风格的ps 命令参数
参数 | 描述 |
---|---|
–deselect | 显示所有进程,命令行中列出的进程 |
–Group grplist | 显示组ID在 grplist 列表中的进程 |
–User userlist | 显示用户ID在 userlist 列表中的进程 |
–group grplist | 显示有效组ID在 grplist 列表中的进程 |
–pid pidlist | 显示PID在 pidlist 列表中的进程 |
–ppid pidlist | 显示父PID在 pidlist 列表中的进程 |
–sid sidlist | 显示会话ID在 sidlist 列表中的进程 |
–tty ttylist | 显示终端设备号在 ttylist 列表中的进程 |
–user userlist | 显示有效用户ID在 userlist 列表中的进程 |
–format format | 仅显示由 format 指定的列 |
–context | 显示额外的安全信息 |
–cols n | 将屏幕宽度设置为 n 列 |
–columns n | 将屏幕宽度设置为 n 列 |
–cumulative | 包含已停止的子进程的信息 |
–forest | 用层级结构显示出进程和父进程之间的关系 |
–headers | 在每页输出中都显示列的头 |
–no-headers | 不显示列的头 |
–lines n | 将屏幕高度设为 n 行 |
–rows n | 将屏幕高度设为 n 排 |
–sort order | 指定将输出按哪列排序 |
–width n | 将屏幕宽度设为 n 列 |
–help | 显示帮助信息 |
–info | 显示调试信息 |
–version | 显示ps 命令的版本号 |
GNU长参数中一个着实让人喜爱的功能就是–forest 参数。它会显示进程的层级信息,用来查看父子进程很方便。
1981 ? 00:00:00 sshd
3078 ? 00:00:00 \_ sshd
3080 ? 00:00:00 \_ sshd
3081 pts/0 00:00:00 \_ bash
16676 pts/0 00:00:00 \_ ps