Processes in D State

· 209 words · 1 minute read

当进程陷入不可中断睡眠的时候,用户没有办法杀掉它。如果该进程进入了僵尸状态、且有很多子进程的话那就更是“屋漏偏逢连夜雨”了。绝大部分情况下,这种情况都是因为 I/O 出了问题,因此除非 I/O 被唤醒,只能重启物理机了。

这里记录两个小技巧。

wchan 🔗

$ ps -eo ppid,pid,user,stat,pcpu,comm,wchan:32

这里,‘wchan’ 会打印进程睡眠在哪个内核函数。

sysrq-trigger 🔗

# echo w > /proc/sysrq-trigger

然后,就能在内核日志中看到陷入 ‘D’ 状态的进程列表,以及它们的完整内核堆栈。

来源:suse.com

comments powered by Disqus