Linux ゾンビ プロセスは、終了したプロセスですが、その親プロセスが、終了したプロセスに関する情報を取得するための余波を処理していないプロセスです。ゾンビ プロセスとは、子プロセスが親プロセスより前に終了し、親プロセスが終了したプロセスです。リサイクルされていない 子プロセスが占有していたリソースを解放すると、子プロセスはゾンビプロセスとなります。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
ゾンビ プロセスとは、終了されたプロセスを指しますが、その親プロセスは、終了されたプロセスに関する情報を取得するための余波をまだ処理していません
ゾンビ プロセスとは、子プロセスが親プロセスより先に終了し、親プロセスが子プロセスをリサイクルせず、子プロセスが占有していたリソースを解放しない場合、子プロセスはゾンビ プロセスになります。親プロセスが最初に終了すると、子プロセスは init によって引き継がれます。子プロセスが終了すると、init は占有している関連リソースをリサイクルします。
プロセスがどのように機能するかは誰もが知っています。プログラムを開始し、タスクを開始し、タスクが完了したらプロセスを停止します。プロセスが停止すると、そのプロセスはプロセス テーブルから削除されます。
システム モニターを通じて現在のプロセスを表示できます。
UNIX システム用語では、終了したが親がまだプロセスを待っていないプロセスをゾンビと呼びます。wait / waitpid) を呼び出すと、そのプロセスはゾンビ プロセスになります。ただし、プロセスの親プロセスが先に終了している場合、そのプロセスはゾンビ プロセスにはなりません。各プロセスが終了すると、システムは現在のシステムで実行中のすべてのプロセスをスキャンして、子プロセスが終了したばかりのプロセスがあるかどうかを確認するからです。終了したプロセスのプロセスがそうなっているので、Init がそれを引き継いで親プロセスになります
拡張知識
ゾンビプロセスの確認方法
コマンド ps を使用すると、親プロセス ID が 1 のプロセスが孤立プロセスであり、s (状態) ステータスが Z のプロセスがゾンビ プロセスであることがわかります。
注: 孤立プロセスは、終了していないが停止されたプロセス (フォアグラウンドの一時停止に相当) ですが、その親プロセスは終了されており、init によって採用されています。一方、ゾンビ プロセスは、プロセスが終了しても、その親プロセスは必ずしも終了するとは限りません。
ゾンビプロセスのクリア方法
親プロセスを書き換えて、子プロセスが死んだら死骸を回収します。具体的な方法は、SIGCHLD シグナルを引き継ぐことです。子プロセスが終了すると、親プロセスに SIGCHLD シグナルが送信され、このシグナルを受信した親プロセスは waitpid() 関数を実行して子プロセスの死骸を収集します。これは、親プロセスが wait を呼び出さなくても、デフォルトの処理では無視されますが、カーネルは親プロセスに SIGCHLD メッセージを送信するという原則に基づいています。このメッセージに応答したい場合は、処理関数を設定できます。 。
親プロセスを強制終了します。親プロセスの終了後、ゾンビ プロセスは「孤立プロセス」になり、プロセス No. 1 の init によって採用されます。Init は常にゾンビ プロセスのクリーンアップを担当します。シャットダウンまたは再起動すると、すべてのゾンビ プロセスが消えます。 。
たとえば、PID 5878 がゾンビ プロセスで、その親プロセスが PID 4809 である場合、ゾンビ プロセス (5878) を強制終了するには、親プロセス (4809) を終了します。
$ sudo kill -9 4809 #4809 is the parent, not the zombie
親プロセスを強制終了するときは十分に注意してください。プロセスの親プロセスが PID 1 で、それを強制終了すると、システムは直接再起動されます。
推奨学習: Linux ビデオ チュートリアル
以上がLinuxのゾンビプロセスとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。