当您运行“top”并查看所有正在运行的进程时,我一直想知道一切实际意味着什么。例如所有各种单字母状态代码用于正在运行的进程(R =正在运行,S =正在等待......)
我在哪里可以找到这个?
答案 0 :(得分:96)
手册页说明状态代码映射到的是什么,但不是它们实际意味着什么。从顶部手册页:
'D' = uninterruptible sleep
'R' = running
'S' = sleeping
'T' = traced or stopped
'Z' = zombie
'R'是最简单的;该进程已准备好运行,并且只要轮到它使用CPU就会运行。
'S'和'D'是两种睡眠状态,其中过程正在等待某些事情发生。区别在于'S'可以被信号中断,而'D'则不能(通常在进程等待磁盘时看到)。
'T'是流程停止的状态,通常是SIGSTOP
或SIGTSTP
。它也可以由调试器(ptrace
)停止。当您看到该状态时,通常是因为您使用Ctrl-Z将命令放在后台。
'Z'是进程已死的状态(它已完成执行),唯一剩下的是在内核上描述它的结构。它正在等待其父进程检索其退出代码,而不是更多。在其父进程完成后,它将消失。
答案 1 :(得分:13)
您可以使用命令man top
答案 2 :(得分:0)
top
和ps
之类的程序从内核本身获取这些值。您可以在源代码中找到其定义:
static const char * const task_state_array[] = {
/* states in TASK_REPORT: */
"R (running)", /* 0x00 */
"S (sleeping)", /* 0x01 */
"D (disk sleep)", /* 0x02 */
"T (stopped)", /* 0x04 */
"t (tracing stop)", /* 0x08 */
"X (dead)", /* 0x10 */
"Z (zombie)", /* 0x20 */
"P (parked)", /* 0x40 */
/* states beyond TASK_REPORT: */
"I (idle)", /* 0x80 */
};
有关更多信息,请参见以下问题:https://unix.stackexchange.com/q/462098/79648