在linux中,“top”命令中的所有值是什么意思?

时间:2008-11-21 01:11:22

标签: linux command-line top-command

当您运行“top”并查看所有正在运行的进程时,我一直想知道一切实际意味着什么。例如所有各种单字母状态代码用于正在运行的进程(R =正在运行,S =正在等待......)

我在哪里可以找到这个?

3 个答案:

答案 0 :(得分:96)

手册页说明状态代码映射到的是什么,但不是它们实际意味着什么。从顶部手册页:

'D' = uninterruptible sleep
'R' = running
'S' = sleeping
'T' = traced or stopped
'Z' = zombie

'R'是最简单的;该进程已准备好运行,并且只要轮到它使用CPU就会运行。

'S'和'D'是两种睡眠状态,其中过程正在等待某些事情发生。区别在于'S'可以被信号中断,而'D'则不能(通常在进程等待磁盘时看到)。

'T'是流程停止的状态,通常是SIGSTOPSIGTSTP。它也可以由调试器(ptrace)停止。当您看到该状态时,通常是因为您使用Ctrl-Z将命令放在后台。

'Z'是进程已死的状态(它已完成执行),唯一剩下的是在内核上描述它的结构。它正在等待其父进程检索其退出代码,而不是更多。在其父进程完成后,它将消失。

答案 1 :(得分:13)

您可以使用命令man top

答案 2 :(得分:0)

topps之类的程序从内核本身获取这些值。您可以在源代码中找到其定义:

https://github.com/torvalds/linux/blob/3950e975431bc914f7e81b8f2a2dbdf2064acb0f/fs/proc/array.c#L129-L143

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