Linux ps command

作用

ps 命令是Process Status的缩写,用于进程的监测和控制。

ps 命令是最基本进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等。

ps 命令显示的是瞬间进程的状态,并不是动态连续的;如果想对进程进行实时监控可用top命令。

用法

命令格式

1
ps [options] [--help]

命令参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@hadoop-centos-01 ~]# ps --help simple

Usage:
ps [options]

Basic options:
-A, -e all processes
-a all with tty, except session leaders
a all with tty, including other users
-d all except session leaders
-N, --deselect negate selection
r only running processes
T all processes on this terminal
x processes without controlling tty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@hadoop-centos-01 ~]# ps --help list

Usage:
ps [options]

Selection by list:
-C <command> command name
-G, --Group <GID> real group id or name
-g, --group <group> session or effective group name
-p, p, --pid <PID> process id
--ppid <PID> parent process id
-q, q, --quick-pid <PID>
process id (quick mode)
-s, --sid <session> session id
-t, t, --tty <tty> terminal
-u, U, --user <UID> effective user id or name
-U, --User <UID> real user id or name

The selection options take as their argument either:
a comma-separated list e.g. '-u root,nobody' or
a blank-separated list e.g. '-p 123 4567'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@hadoop-centos-01 ~]# ps --help output

Usage:
ps [options]

Output formats:
-F extra full
-f full-format, including command lines
f, --forest ascii art process tree
-H show process hierarchy
-j jobs format
j BSD job control format
-l long format
l BSD long format
-M, Z add security data (for SELinux)
-O <format> preloaded with default columns
O <format> as -O, with BSD personality
-o, o, --format <format>
user-defined format
s signal format
u user-oriented format
v virtual memory format
X register format
-y do not show flags, show rss vs. addr (used with -l)
--context display security context (for SELinux)
--headers repeat header lines, one per page
--no-headers do not print header at all
--cols, --columns, --width <num>
set screen width
--rows, --lines <num>
set screen height
1
2
3
4
5
6
7
8
9
10
[root@hadoop-centos-01 ~]# ps --help threads

Usage:
ps [options]

Show threads:
H as if they were processes
-L possibly with LWP and NLWP columns
-m, m after processes
-T possibly with SPID column
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@hadoop-centos-01 ~]# ps --help misc

Usage:
ps [options]

Miscellaneous options:
-c show scheduling class with -l option
c show true command name
e show the environment after command
k, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]
L show format specifiers
n display numeric uid and wchan
S, --cumulative include some dead child process data
-y do not show flags, show rss (only with -l)
-V, V, --version display version information and exit
-w, w unlimited output width

--help <simple|list|output|threads|misc|all>
display help and exit

用法示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely

To see every process on the system using BSD syntax:
ps ax
ps axu

To print a process tree:
ps -ejH
ps axjf

To get info about threads:
ps -eLf
ps axms

To get security info:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM

To see every process running as root (real & effective ID) in user format:
ps -U root -u root u

To see every process with a user-defined format:
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

Print only the process IDs of syslogd:
ps -C syslogd -o pid=

Print only the name of PID 42:
ps -q 42 -o comm=

附录

Linux上进程有5种状态

  1. 运行 – 正在运行或在运行队列中等待

  2. 中断 – 休眠中, 受阻, 在等待某个条件的形成或接受到信号

  3. 不可中断 – 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生

  4. 僵死 – 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放

  5. 停止 – 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行

ps工具标识进程的5种状态码

  1. R 运行 runnable (on run queue)
  2. S 中断 sleeping
  3. D 不可中断 uninterruptible sleep (usually IO)
  4. Z 僵死 a defunct (”zombie”) process
  5. T 停止 traced or stopped

ps命令输出信息含义

表头 含义
USER 该进程是由哪个用户产生的。
PID 进程的 ID。
%CPU 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ 该进程占用虚拟内存的大小,单位为 KB。
RSS 该进程占用实际物理内存的大小,单位为 KB。
TTY 该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
STAT 进程状态。常见的状态有以下几种:-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。-R:该进程正在运行。-S:该进程处于睡眠状态,可被唤醒。-T:停止状态,可能是在后台暂停或进程处于除错状态。-W:内存交互状态(从 2.6 内核开始无效)。-X:死掉的进程(应该不会出现)。-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。-<:高优先级(以下状态在 BSD 格式中出现)。-N:低优先级。-L:被锁入内存。-s:包含子进程。-l:多线程(小写 L)。-+:位于后台。
START 该进程的启动时间。
TIME 该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND 产生此进程的命令名。
-------------本文结束感谢您的阅读-------------