![如何确定卡在“D”状态进程的原因?](https://linux22.com/image/729940/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E5%8D%A1%E5%9C%A8%E2%80%9CD%E2%80%9D%E7%8A%B6%E6%80%81%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%8E%9F%E5%9B%A0%EF%BC%9F.png)
答案1
您可以查看该进程的堆栈:
cat /proc/<process pid>/stack
它将向您提供当它进入 D 状态时正在做什么的信息。
echo w > /proc/sysrq-trigger; dmesg
将告诉内核在 dmesg 缓冲区中报告 D 状态进程的所有堆栈跟踪。
处于 D 状态的进程无法被终止。在某些情况下,进程会长时间处于 D 状态,但偶尔会完成 I/O 并在短时间内可中断,然后返回相同的 I/O 活动并再次处于 D 状态。然后使用
while (true); do kill -9 PID; done
当进程可中断时,发出 KILL 信号的机会很小。