linux 进程5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps 部分选项:
a 显示现行终端机下的所有程序,包括其他用户的程序。
-A 显示所有程序。
c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
-e 此参数的效果和指定"A"参数相同。
e 列出程序时,显示每个程序所使用的环境变量。
f 用ASCII字符显示树状结构,表达程序间的相互关系。
-H 显示树状结构,表示程序间的相互关系。
-N 显示所有的程序,除了执行ps指令终端机下的程序之外。
s 采用程序信号的格式显示程序状况。
S 列出程序时,包括已中断的子程序资料。
-t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
u 以用户为主的格式来显示程序状况。
x 显示所有程序,不以终端机来区分。
-l 較長,較詳細的顯示該PID的信息
# ps -lA
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 75 0 - 518 - ? 00:00:39 init
1 S 0 2 1 0 -40 - - 0 migrat ? 00:00:00 migration/0
1 S 0 3 1 0 94 19 - 0 ksofti ? 00:01:34 ksoftirqd/0
5 S 0 4 1 0 -40 - - 0 watchd ? 00:00:03 watchdog/0
1 S 0 5 1 0 70 -5 - 0 worker ? 00:00:54 events/0
1 S 0 6 1 0 70 -5 - 0 worker ? 00:00:00 khelper
5 S 0 7 1 0 78 -5 - 0 worker ? 00:00:00 kthread
1 S 0 10 7 0 75 -5 - 0 worker ? 00:00:12 kblockd/0
1 S 0 11 7 0 80 -5 - 0 worker ? 00:00:00 kacpid
1 S 0 78 7 0 80 -5 - 0 worker ? 00:00:00 cqueue/0
1 S 0 81 7 0 70 -5 - 0 hub_th ? 00:00:00 khubd
... ...
F 进程标记,4表示超级用户,见下文 process flags
S 进程状态,见下文 process state codes
UID 用户ID
PID 进程ID
PPID 父进程ID
C cpu 使用率
PRI 优先级
NI 进程的 nice 值,数值大,表示较少占用CPU时间
ADDR 该进程在内存哪部分,'-' 表示运行中的进程
SZ 用掉内存的大小
WCHAN 当前进程是否在运行,'-' 表示正在运行
TTY 登录者的终端位置
TIME 用掉 cpu 的时间
CMD 所运行的命令
# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2072 616 ? Ss Jan04 0:39 init [5]
root 2 0.0 0.0 0 0 ? S< Jan04 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN Jan04 1:34 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< Jan04 0:03 [watchdog/0]
root 5 0.0 0.0 0 0 ? S< Jan04 0:54 [events/0]
root 6 0.0 0.0 0 0 ? S< Jan04 0:00 [khelper]
root 7 0.0 0.0 0 0 ? S< Jan04 0:00 [kthread]
root 10 0.0 0.0 0 0 ? S< Jan04 0:12 [kblockd/0]
root 11 0.0 0.0 0 0 ? S< Jan04 0:00 [kacpid]
... ...
USER 进程的属主
PID 进程ID
PPID 父进程
%CPU 进程占用的CPU百分比
%MEM 占用内存的百分比
VSZ 该进程使用的虚拟内存量(KB)
RSS 该进程占用的固定内存量(KB)(驻留中页的数量)
TTY 该进程在哪个终端上运行(登录者终端的位置),若是与终端无关,则显示 '?',若为 ‘pts/0' 等,则表示由网络连接主机的进程
START 该进程被触发启动的时间
TIME 该进程实际使用 cpu 运行的时间
COMMAND 命令的名称和参数
process flags
The sum of these values is displayed in the "F" column, which is provided by the flags output specifier.
1 forked but didn’t exec
4 used super-user privileges // 超级用户
process state codes
Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a
process.
D Uninterruptible sleep (usually IO) // 无法中断的休眠状态(通常 IO 的进程)
R Running or runnable (on run queue) // 正在运行或运行在队列中的
S Interruptible sleep (waiting for an event to complete) // 处于休眠状态
T Stopped, either by a job control signal or because it is being traced. // 由作业控制信号或正在跟踪而停止的状态
W paging (not valid since the 2.6.xx kernel) // 进入内存交换 (从内核2.6开始无效)
X dead (should never be seen) // 死掉的进程(基本很少見)
Z Defunct ("zombie") process, terminated but not reaped by its parent. // 僵尸进程,终止而又未被父进程回收的进程。
For BSD formats and when the stat keyword is used, additional characters may be displayed:
< high-priority (not nice to other users) // 高优先级
N low-priority (nice to other users) // 低优先级
L has pages locked into memory (for real-time and custom IO) // 有些页被锁进内存(用于实时或自定义IO)
s is a session leader // 最初会话(该进程之下有子进程)
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) // 多线程
+ is in the foreground process group // 后台的进程组
reference link:
ps aux详解(进程状态说明)_huangmr的专栏-CSDN博客