进程永久停留在D状态

时间:2013-12-06 12:08:00

标签: linux ubuntu process hard-drive

我遇到了一些在Ubuntu 10.04.3 LTS上陷入D状态的进程的问题。

他们自11月5日(今天是12月6日)以来一直处于这种状态。我知道这些是不间断的睡眠状态,通常与等待来自硬盘等硬件的数据有关。这是一个生产服务器,所以重新启动是最后的手段,是否有人能够阐明这些过程可能是什么?

这是来自ps -aux

的D状态项的输出
www-data 22851  0.0  0.0      0     0 ?        D    Nov05   0:00 [2637.64]
www-data 26306  0.0  0.0   4008    12 ?        D    Nov05   0:00 ./2.6.37
www-data 26373  0.0  0.0   4008    12 ?        D    Nov05   0:00 ./n2
www-data 26378  0.0  0.0   4008    12 ?        D    Nov05   0:00 ./n2

这是ps axl | awk '$10 ~ /D/'的输出以获取更多信息。

0    33 22851     1  20   0      0     0 econet D    ?          0:00 [2637.64]
1    33 26306     1  20   0   4008    12 ec_dev D    ?          0:00 ./2.6.37
1    33 26373     1  20   0   4008    12 ec_dev D    ?          0:00 ./n2
1    33 26378     1  20   0   4008    12 ec_dev D    ?          0:00 ./n2

有没有办法杀死这些?重新启动时是否处于此状态的进程导致任何问题?

2 个答案:

答案 0 :(得分:20)

这是进程的可怕不可中断(TASK_UNINTERRUPTIBLE)状态。这是一个状态,在该状态开始等待,完成之前,该过程不会对信号作出反应。  不幸的是,这是一种必要的恶魔请参阅here和此处What is an uninterruptable process?

我的回答是重启系统 重启会导致任何问题吗? 很难说,它可能不会。处于D状态的进程可能必须执行一些重要的更新,如果您重新启动它将不会 如果您真的无法重新启动,请尝试查找进程正在等待的磁盘,并通过打开,关闭,读取/写入磁盘来查看磁盘是否正常工作

答案 1 :(得分:4)

不 - 你不能杀死他们,期间。 kill -9也不起作用。它不是内核bug,而是设计的。所有信号都被阻止,直到这些进程离开D状态。它们要么离开D状态,要么系统重新启动。不,重启与这些家伙没有任何问题。

这类问题的常见罪魁祸首是像cdrom这样的可移动媒体设备。该设备可能有缺陷,或者有人找到了做蠢事的方法。