web-dev-qa-db-ja.com

プロセスが永続的に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/'の出力で、もう少し情報があります。

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

これらを殺す方法はありますか?再起動時にこの状態のプロセスがあると問題が発生しますか?

31
Dr Craig

これは、プロセスの恐ろしい割り込み不可能な(TASK_UNINTERRUPTIBLE)状態です。これは、プロセスが待機を開始して完了するまで、シグナルに反応しない状態です。残念ながら、それは必要な悪です。 here およびhere 割り込み不可能なプロセスとは? を参照してください。

私の答えは、システムを再起動することです。
再起動は問題を引き起こしますか?
伝えるのは難しいですが、できないかもしれません。 D状態にあるプロセスは、再起動すると失敗する重要な更新を行う必要がある場合があります。

21
Deepthought

いいえ-それらを殺すことはできません、期間。 kill -9も機能しません。そして、それはカーネルのバグではなく、設計によるものです。それらのプロセスがD状態を離れるまで、すべての信号はブロックされます。 D状態のままにするか、システムが再起動します。いいえ、再起動しても問題はありません。

この種の問題の通常の原因は、cdromなどのリムーバブルメディアデバイスです。デバイスに欠陥があるか、誰かがバカな方法を見つけた可能性があります。

5
jim mcnamara