原 如何查看线程在等待IO还是CPU资源
命令
1 | ps -eL -o lwp,pid,ppid,state,comm | grep -E " R | D " |
这条命令用于显示当前系统中处于运行状态 (R
) 或不可中断等待状态 (D
) 的线程。
让我们逐步解释每个部分的含义:
ps -eL -o lwp,pid,ppid,state,comm
ps
:进程状态命令,用于显示系统中正在运行的进程信息。-eL
:-e
:显示所有进程(包括系统进程)。-L
:显示每个进程的线程级别信息。
-o lwp,pid,ppid,state,comm
:指定输出的列格式。lwp
:显示轻量级进程(Light Weight Process)的 ID,即线程 ID。pid
:显示进程 ID。ppid
:显示父进程 ID。state
:显示线程或进程的当前状态(如运行、睡眠、等待等)。comm
:显示可执行命令的名称。
| grep -E " R | D "
|
:管道符号,用于将前一部分命令的输出传递给下一部分命令。grep -E " R | D "
:grep
:用于过滤输出,显示符合指定模式的行。-E
:启用扩展的正则表达式。" R | D "
:匹配线程或进程状态是R
(运行)或D
(不可中断等待)的行。状态R
表示线程正在运行或就绪状态,D
表示线程处于不可中断的睡眠状态(通常在等待 I/O 操作)。
线程状态的解释
R
(Running):线程处于运行或就绪状态,正在被 CPU 调度执行。D
(Uninterruptible Sleep):线程处于不可中断的等待状态,通常是因为等待 I/O 操作(例如磁盘 I/O),这个状态下线程不能被其他信号打断。
结果分析
执行这条命令会输出系统中所有处于 R
或 D
状态的线程,并显示它们的线程 ID(lwp
)、进程 ID(pid
)、父进程 ID(ppid
)、当前状态(state
)、以及执行的命令名(comm
)。