在 Linux 中,“top”命令中的所有值是啥意思?

Posted

技术标签:

【中文标题】在 Linux 中,“top”命令中的所有值是啥意思?【英文标题】:In Linux, what do all the values in the "top" command mean?在 Linux 中,“top”命令中的所有值是什么意思? 【发布时间】:2010-09-23 09:04:28 【问题描述】:

当您运行top 并查看所有正在运行的进程时,我一直想知道所有内容的实际含义。例如正在运行的进程的所有各种单字母状态代码(R = Running,S = Sleeping,等等...)

我在哪里可以找到这个?

【问题讨论】:

【参考方案1】:

man page 表示状态代码映射到什么,但不是它们的实际含义。来自top 手册页:

'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' 是进程死亡的状态(它已经完成了执行),唯一剩下的就是在内核上描述它的结构。它正在等待其父进程检索其退出代码,仅此而已。其父进程用完后,它就会消失。

【讨论】:

这并没有说明导致S 状态的原因。相反,我知道磁盘活动会导致D 状态。 @A-B-B:那是因为有很多事情会导致S 状态。最常见的情况是进程正在等待事件和/或超时(select/poll/epoll,从终端或网络阻止read,以及许多其他情况)。 相关答案更详细:***.com/questions/223644/… 此答案是否有可用的现代更新?我看到状态代码为“I”的进程 - 手册页没有说明那是什么! 如果被调试器停止,状态不是t,不是T【参考方案2】:

您可以使用命令man top 来查找状态:

D = uninterruptible sleep
I = idle
R = running
S = sleeping
T = stopped by job control signal
t = stopped by debugger during trace
Z = zombie

【讨论】:

嘿伙计!你偷了我的答案! RTFM 在这里不是一个有效的答案,因为仅凭手册不足以确定状态的真正含义。 [~] # man top sh: man: command not found 我知道,我知道:man7.org/linux/man-pages/man1/top.1.html【参考方案3】:

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

【讨论】:

以上是关于在 Linux 中,“top”命令中的所有值是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Linux里面top命令作用是啥?

在linux中top命令的具体用法是啥?

“linux top命令”是啥意思?

在 *nix 中,是啥导致 top 命令中的“睡眠”?

在linux的top命令里的cpu信息是啥意思

linux那个umask值是啥?