在linux系统上,经常是用ps aux |grep *
来搜索系统中进程的状态,使用最多的是查看进程pid,但很多列项中,除了进程pid外其余的各项都代表了什么呢?可参看如下:
[root@localhost etc]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2052 616 ? Ss Jul03 0:00 init [3]
root 2 0.0 0.0 0 0 ? S Jul03 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN Jul03 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Jul03 0:00 [watchdog/0]
root 5 0.0 0.0 0 0 ? S< Jul03 0:00 [events/0]
root 6 0.0 0.0 0 0 ? S< Jul03 0:00 [khelper]
root 7 0.0 0.0 0 0 ? S< Jul03 0:00 [kthread]
...
如上每一列的缩写,代表了每一列的含义。
下面对STAT
项的具体含义详细分析如下:
D 不可中断 Uninterruptible sleep (usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程 (基本很少見)
< 高优先级的进程
N 低优先级的进程
L 有些页被锁进内存
s 包含子进程
+ 位于后台的进程组;
l 多线程,克隆线程 multi-threaded (using CLONE_THREAD, like NPTL pthreads do)