
httpdは複数の子プロセスを生成しますが、この子プロセスがゾンビプロセス化してしまう
ことがあります。
このゾンビ化してしまう原因として考えられるものを教えて下さい。
『何らかの理由で子プロセスが停止せずに親プロセスが停止した』等、あいまいな答えでも
構いません。もちろん具体的であれば、とても助かりますが…。
思いつく限りいくつでも構いませんので、教えて下さい。
ちなみに、私が使用しているマシンで上記現象が発生している訳ではなく、一般的な事例として
子プロセスのゾンビ化の原因になり得る事象を知りたいと思っていますので、構成情報などは
あまり気にせずに答えて頂けると幸いです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ゾンビプロセス一般について書きます。
ゾンビプロセスとは、プロセスの実体は無いが、プロセステーブル(カーネルがプロセスを管理してる台帳)に
エントリーがある状態を指します。
名簿に名前があるけど、本人は居なくなっちゃってる、と。
あるプロセスが終了したときには、必ず一瞬でもこの状態になります。
通常は、プロセスが終了したというシグナルが親プロセスに通知され、親プロセスが後始末を
してあげて、めでたくゾンビ状態ではなくなるのです。
もし、親がシグナルを受けたときに適切な処理を行っていなければ、親プロセスが終了するか
システムが再起動するまで、ゾンビ状態のままです。
> このゾンビ化してしまう原因として考えられるものを教えて下さい。
子プロセスからのシグナルを受けたときの処理がまずい、のが原因です。
自力で調べた中にもシグナルについて触れてある資料はあったのですが、いま一つ頭の中で
整理しきれていなかったんです。
この回答を読んで、ようやくはっきりしました。ありがとうございました。
ところで、
> もし、親がシグナルを受けたときに適切な処理を行っていなければ、親プロセスが終了するか
> システムが再起動するまで、ゾンビ状態のままです。
とのことですが、親プロセスを終了させれば、ゾンビとなった子プロセスは必ず全て
終了されるものなのでしょうか?
もし宜しければ教えて下さい。
No.2
- 回答日時:
> とのことですが、親プロセスを終了させれば、ゾンビとなった子プロセスは必ず全て
> 終了されるものなのでしょうか?
私は、そのように理解していますが、これは確約されたことではなく、その unix の実装(と、障害)次第、となります。
また、setsid() を使ってプロセスグループを親と別にしてしまったプロセスが、もしも Zombie に
なった場合(まず、ならない、と思いますが)には、親プロセスの終了は意味が無い(と思う)。
私も、知識の整理をかねて Web をうろうろしていたら、Solaris9 には preap なるコマンドがあって、
お掃除をしてくれそう。
# 収穫、収穫 :-)
参考URL:http://docs.sun.com/db/doc/816-0210/6m6nb7mi1?l= …
確かに、仮にプロセスグループが異なっているとしたら、親プロセスの停止は子プロセスに
関係ありませんね。
具体的に事例を提示して頂き、とても判りやすかったです。
私の使用している Solaris8 では、残念ながら preap コマンドはまだ実装されていないようですが、
今後の参考にさせて頂きます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
killコマンドの終了と強制終了...
-
windows 間違ったボリュームが...
-
タスクバーの音量アイコンをク...
-
CPU使用率とロードアベレージ
-
指定したプログラムの実行を禁...
-
デバイスを使用中のプロセスの確認
-
デスクトップ上の謎の白い□
-
プロセス、サービス、デーモン...
-
タスクマネージャのCPU率がおか...
-
systemのCPU使用量が一瞬極端に...
-
SONYの音楽ソフト「x-アプリ」...
-
ファイル名一覧の印刷
-
pingは正常なのにtracerouteで...
-
シェルスクリプトとターミナル...
-
SPI非言語の問題 解説お願いします
-
エクセルの表にヘンな枠が・・・
-
ubuntuの端末の左にカレントデ...
-
Docker環境は以下通りです。doc...
-
Linux のシェルスクリプトの強...
-
VBAを使って電源を切るには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
System Idle Processってなに?...
-
プロセスがタスクマネージャー...
-
タスクバーの音量アイコンをク...
-
デスクトップ上の謎の白い□
-
CPU使用率取得方法について
-
タスクマネージャのCPU率がおか...
-
スリープ状態から復帰後、DPCs...
-
Windowsで作れるスレッド最大数...
-
コマンドライン上でファイルを...
-
プロンプトが返らない
-
CPU使用率が常に50~10...
-
メディアプレイヤーが終了でき...
-
アクロバットを終了しても、プ...
-
sighupとsigtermの違い
-
イラストレータでの透明部分の...
-
デュアルCPU(デュアルコアでは...
-
デーモンモードとは何でしょうか?
-
【プログラム】 iu14d2n.tmp ...
おすすめ情報