crash> help ps | grep "the task state"
5. the task state (RU, IN, UN, ZO ,ST, TR, DE, SW, WA, PA, ID, NE)
参考linux-4.19.113内核源码(include/linux/sched.h),有如下定义
/*
* Task state bitmask. NOTE! These bits are also
* encoded in fs/proc/array.c: get_task_state().
*
* We have two separate sets of flags: task->state
* is about runnability, while task->exit_state are
* about the task exiting. Confusing, but this way
* modifying one set can't modify the other one by
* mistake.
*/
/* Used in tsk->state: */
#define TASK_RUNNING 0x0000
#define TASK_INTERRUPTIBLE 0x0001
#define TASK_UNINTERRUPTIBLE 0x0002
#define __TASK_STOPPED 0x0004
#define __TASK_TRACED 0x0008
/* Used in tsk->exit_state: */
#define EXIT_DEAD 0x0010
#define EXIT_ZOMBIE 0x0020
#define EXIT_TRACE (EXIT_ZOMBIE | EXIT_DEAD)
/* Used in tsk->state again: */
#define TASK_PARKED 0x0040
#define TASK_DEAD 0x0080
#define TASK_WAKEKILL 0x0100
#define TASK_WAKING 0x0200
#define TASK_NOLOAD 0x0400
#define TASK_NEW 0x0800
#define TASK_STATE_MAX 0x1000
/* Convenience macros for the sake of set_current_state: */
#define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
#define TASK_STOPPED (TASK_WAKEKILL | __TASK_STOPPED)
#define TASK_TRACED (TASK_WAKEKILL | __TASK_TRACED)
#define TASK_IDLE (TASK_UNINTERRUPTIBLE | TASK_NOLOAD)
/* Convenience macros for the sake of wake_up(): */
#define TASK_NORMAL (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE)
/* get_task_state(): */
#define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \
TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \
__TASK_TRACED | EXIT_DEAD | EXIT_ZOMBIE | \
TASK_PARKED)
即:
RU | TASK_RUNNING | 可执行状态或运行状态 |
IN | TASK_INTERRUPTIBLE | 可中断阻塞状态 |
UN | TASK_UNINTERRUPTIBLE | 不可中断阻塞状态 |
ZO | EXIT_ZOMBIE | 僵死状态 |
ST | TASK_STOPPED | 暂停状态 |
TR | TASK_TRACED | 跟踪状态 |
DE | TASK_DEAD (EXIT_DEAD ?) | 退出状态 |
SW | ? | |
WA | TASK_WAKEKILL? TASK_WAKING? | |
PA | TASK_PARKED | ? |
ID | TASK_IDLE | 空闲? |
NE | TASK_NEW | 新建? |
参考: Linux进程状态及其相互转换_linux进程状态转换图_刘鹏加油呀的博客-CSDN博客