进程永久停留在D状态

Dr *_*aig 32 linux ubuntu process hard-drive

我有一个问题,在Ubuntu 10.04.3 LTS上陷入D状态的某些进程.

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

这是D状态项的输出 ps -aux

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
Run Code Online (Sandbox Code Playgroud)

这是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
Run Code Online (Sandbox Code Playgroud)

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

Dee*_*ght 23

这是进程的可怕不可中断(TASK_UNINTERRUPTIBLE)状态.这是一个状态,在该状态开始等待,完成之前,该过程不会对信号做出反应.不幸的是,这是一种必要的恶魔 看这里和这里什么是不间断的过程?.

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


jim*_*ara 6

不,您无法杀死他们,期间。kill -9也不起作用。这不是内核错误,而是设计使然。所有信号都将被阻塞,直到那些进程退出D状态。他们要么退出D状态,要么系统重新启动。不,重启对这些家伙没有任何问题。

此类问题的常见罪魁祸首是可移动媒体设备,例如cdrom。该设备可能有故障,或者有人发现有办法做一些愚蠢的事情。

  • 因此,简单,可解决的硬件或锁定问题将升级为主要问题,需要重新启动。而且内核人员甚至都不了解,这是对事物的次优处理。 (19认同)
  • 不可以,如果它不能从“ D”状态伸出,尽管有可能(就像在Windows中一样),那显然是不正常的。如果是设计使然,那就是错误的设计。尽管我多年来没有发现过此类问题,但在此之前给我带来了很多麻烦。我认为,大多数情况下内核人员都可以解决此问题。是的,重启有助于-至少直到下一个“ D”状态问题。 (6认同)
  • @jimmcnamara如果当时尚不存在硬件,那将非常愚蠢。如果它是发布此答案的内核作者,则我将给出-1。 (3认同)