进程永久停留在D状态

我在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/'输出 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 

有没有办法杀死这些? 在重启过程中是否有进程处于这种状态导致任何问题?

Solutions Collecting From Web of "进程永久停留在D状态"

这是一个进程可怕的不可中断(TASK_UNINTERRUPTIBLE)状态。 这是一个进程不会对信号做出反应的状态,直到它开始等待,完成。 不幸的是这是一个必要的罪恶。 看到这里和这里什么是不间断的过程? 。

我的答案是重新启动系统。
重新启动会导致任何问题?
很难说,这可能不会。 处于D状态的进程可能不得不做一些重要的更新,如果你重新启动它不会。
如果你真的不能重新启动,试着找到进程正在等待的磁盘,并通过打开,关闭,读取/写入磁盘来查看磁盘是否工作正常

不 – 你不能杀了他们。 kill -9也不起作用。 而且它不是内核bug,它是通过设计的。 所有信号都被阻塞,直到这些进程离开D状态。 他们要么离开D状态,要么系统重新启动。 不,重新启动对这些人没有任何问题。

通常这类问题的罪魁祸首是可移动媒体设备,如光驱。 该设备可能有缺陷,或有人找到一种方法来做一些愚蠢的事情。