答案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 信号的机会很小。