如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。如果想对进程时间监控,应该用 top 工具。下面主要介绍下ps指令。
linux进程状态
在Linux中,进程存在5中状态
运行状态(正在运行或在运行队列中等待)
中断状态(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
僵死状态(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps常用命令
下面是常用的ps指令,查看进程状态 (1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。 (2)ps -A 显示所有程序。 (3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 (4)ps -e 此参数的效果和指定”A”参数相同。 (5)ps e 列出程序时,显示每个程序所使用的环境变量。 (6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 (7)ps -H 显示树状结构,表示程序间的相互关系。 (8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 (9)ps s 采用程序信号的格式显示程序状况。 (10)ps S 列出程序时,包括已中断的子程序资料。 (11)ps -t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 (12)ps u 以用户为主的格式来显示程序状况。 (13)ps x 显示所有程序,不以终端机来区分。 (14)ps -l 較長,較詳細的顯示該PID的信息 (15)ps au 显示终端下用户的所有程序
运行实例
实例一:ps -lA | more
$ ps -lA |more
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0100800 - 13212 ep_pol ? 00:02:16 systemd
1 S 0200800 - 0 kthrea ? 00:00:00 kthreadd
1 S 0320800 - 0 smpboo ? 00:00:01 ksoftirqd/01 S 052060 -20 - 0 worker ? 00:00:00 kworker/0:0H
1 S 0720 -40 - - 0 smpboo ? 00:00:05 migration/01 S 0820800 - 0 rcu_gp ? 00:00:00 rcu_bh
1 S 0920800 - 0 rcu_no ? 00:00:00 rcuob/01 S 01020800 - 0 rcu_no ? 00:00:00 rcuob/11 R 01120800 - 0 ? ? 00:10:41 rcu_sched
1 S 01220800 - 0 rcu_no ? 00:04:07 rcuos/01 S 01320800 - 0 rcu_no ? 00:06:51 rcuos/15 S 01420 -40 - - 0 smpboo ? 00:00:16 watchdog/05 S 01520 -40 - - 0 smpboo ? 00:00:15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
相关信息解释:
F :进程的标志(flag),4表示用户为超级用户
S :进程的状态(stat)
PID:进程的ID
C :CPU使用资源的百分比
PRI:priority(优先级)的缩写,
NI :Nice值,
ADDR:核心功能,指出该进程在內存的那一部分,如果是运行的进程,一般都是“-”
SZ :用掉的内存的大小
WCHAN:当前进程是否正在运行,若为“-”表示正在进行
TTY :登陆者的终端位置
TIME:用掉的CPU的时间
CMD :所执行的指令
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 该进程使用的虚拟內存量(KB);
RSS 该进程占用的固定內存量(KB)(驻留中页的数量);
TTY 该进程在終端上运行(登陆者的終端位置),若与终端无关,则显示(?)。若为pts/0等,则表示由网络连接主机进程
WCHAN 当前进程是否正在运行,若为“-”表示正在运行;
START 该进程被触发启动时间;
TIME 该进程实际使用CPU运行的时间;
COMMAND 命令的名称和参数;
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
实例三:ps au
可显示当前用户的任务进程
[liudiwei@master bin]$ ps au
USER PID %CPU%MEM VSZ RSS TTY STAT START TIME COMMAND
root 23330.00.01165682296 tty1 Ss+ 7月030:00 -bash
liudiwei 55890.00.01168763544 pts/0 Ss+ 8月010:02 -bash
liudiwei 60420.00.01233561328 pts/2 R+ 22:310:00 ps au
liudiwei 989667.113.555473403320412 pts/0 R 10:58464:55python cross_validation.py
root 137570.00.01167003168 pts/3 Ss+ 21:010:00 -bash
liudiwei 1510229.26.555514881599236 pts/0 R 17:1093:41python submodulary.py 1
liudiwei 155780.00.01168003448 pts/2 Ss 17:120:00 -bash
liudiwei 1577728.96.455458761584784 pts/2 R 17:1292:14python submodulary.py 7
liudiwei 1579128.86.455459001578696 pts/2 R 17:1291:54python submodulary.py 8
liudiwei 1586029.06.455364641582700 pts/2 R 17:1392:14python submodulary.py 9
liudiwei 1587528.96.455423721584640 pts/2 R 17:1392:04python submodulary.py 10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
STAT状态位常見的状态字符
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换 (从内核2.6开始无效);
X 死掉的进程 (基本很少見);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;