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

Aar*_* Fi 50 linux command-line top-command

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

我在哪里可以找到这个?

Ces*_*arB 106

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

'D' = uninterruptible sleep
'R' = running
'S' = sleeping
'T' = traced or stopped
'Z' = zombie
Run Code Online (Sandbox Code Playgroud)

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

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

'T'是一个停止过程的状态,通常是通过SIGSTOPSIGTSTP.它也可以通过调试器(ptrace)停止.当您看到该状态时,通常是因为您使用Ctrl-Z在背景上放置命令.

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

  • 相关答案更详细:/sf/ask/15655111/#224042 (2认同)
  • 此答案是否有可用的现代更新?我看到状态代码为“I”的进程 - 手册页没有说明那是什么! (2认同)

小智 13

您可以使用该命令 man top

  • 嘿伙计!你偷了我的答案! (2认同)
  • RTFM 在这里不是一个有效的答案,因为仅凭手册不足以确定状态的真正含义。 (2认同)

con*_*gus 5

程序喜欢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 */
};
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此问题:https : //unix.stackexchange.com/q/462098/79648