• ベストアンサー

割り込み不可能?なプロセスを強制終了する方法

Perlのスクリプトが、フリーズ(?)してしまいました。ps コマンドで状態をみると、D (割り込み不可能なスリープ状態 (通常 IO 中))になったままです。kill -KILL しても終了しません。 このような場合は、どうやって終了させればよいのでしょうか? また、何が原因で止まっているのかを調べる方法はありますでしょうか? 必要な情報があれば補足しますので、どなたか分かる方いましたら、お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Dの状態ではmoneさん書かれたように割り込み不可ですので、KILLできません。そのスクリプトはディスクやテープバックアップなどをいじってませんか?こういう状態になってしまうのはカーネルモードで走るコードのバグのことが多いです。最近カーネルのアップデートなどされていませんか?またハードの故障に適切に対応できないドライバのケースもありますのでログやdmesgにへんなメッセージが出てないか確認してみましょう。

mone
質問者

お礼

回答ありがとうございます。 やっぱりKILLできないんですね。サーバ管理者などにも確認してみたところ、増設したHDが外されていて、それにアクセスしようとして止まっていたようでした。 OSには疎く、カーネルやドライバなどいじったことがないのですが、その辺も含めて管理者に今後の対応方法などについて相談してみたいと思います。 どうもありがとうございました。

その他の回答 (2)

  • uyo_uyo
  • ベストアンサー率0% (0/2)
回答No.2

root権はあるのでしょうか?rootになっての kill -9 pid でも駄目な場合は、再起動しかないような…。 そのPerlのプログラムはどのようなもので、どうやって起動させたのですか?

mone
質問者

補足

root権限でcronに登録しているバッチ処理用のスクリプトで、これまで1年近く稼動させていても問題なかったのですが、突然そのような状態に陥ってしまったのです。 もちろんroot権限でkillしていますが、駄目なようです。やはり再起動しかないでしょうか?

  • uyo_uyo
  • ベストアンサー率0% (0/2)
回答No.1

#kill -9 プロセス では駄目でしょうか?

mone
質問者

補足

回答ありがとうございます。 kill -9 でも駄目でした・・・

関連するQ&A