VITUX
ソフトウェアテスターとして、我々は時々ゾンビプロセスが私たちのシステム上でどのように見えるかを知る必要があります。 どのプログラムとプロセスIDがそのゾンビプロセスに関連付けられているかを具体的に知っていれば、さまざまなテストを実行できます。
ゾンビプロセスとは何ですか?
Linuxではゾンビまたは消滅したプロセスは完了したプロセスですが、親プロセスと子プロセスの間の対応がないため、そのエントリはまだプロセス 通常、親プロセスはwait()関数を介して子プロセスの状態をチェックします。 子プロセスが終了すると、wait関数は親プロセスにメモリからプロセスを完全に終了するように通知します。 ただし、親がその子のいずれかのwait関数を呼び出さなかった場合、子プロセスは死んだプロセスまたはゾンビプロセスとしてシステム内で生き これらのゾンビプロセスは、お使いのシステム上で、大量に蓄積し、そのパフォーマンスに影響を与える可能性があります。
topコマンドを実行してゾンビが実行されている場合、次のように出力の二行目で示されます:
に表示されるゾンビプロセスただし、システム上で実行されているゾンビプロセスがない場合は、この記事で説明するように、テスト目的 このプロセスをUbuntu18.04で実行しています。
ゾンビプロセスの作成
このセクションでは、システム上でゾンビプロセスを実行するためのcプログラムを記述します。
テキストエディタを開き、次のコードを入力します。
Code
#include <stdlib.h>#include <sys/types.h>#include <unistd.h>int main (){pid_t child_pid;child_pid = fork ();if (child_pid > 0) {sleep (60);}else {exit (0);}return 0;}
このファイルをゾンビとして保存します。c
このコードで作成されたゾンビプロセスは60秒間実行されます。 Sleep()関数で時間(秒単位)を指定することで、時間を長くすることができます。
ターミナルを開き、次のコマンドを実行してこのプログラムをコンパイルします:
$ cc zombie.c -o zombie
これで、zombieという名前の実行可能ファイルが作成されます。
次のコマンドを使用してシステムにGNU Cコンパイラがインストールされていない場合は、GNU cコンパイラをインストールする必要があることに注意し:
$ sudo apt-get install build-essential
次に、次のコマンドを使用してゾンビプログラムを実行します:
./zombie
次の出力が表示されます:
テスト中に親プロセスID(PPID)と子プロセスID(PID)を使用することができます。
このプロセスが実行されている間、topコマンドを使用して別のターミナルウィンドウでシステムパフォーマンスを表示できます。 出力の2行目から1つのゾンビプロセスを見ることができます。
psコマンドは、この廃止されたプロセスとそれを担当するゾンビプログラムも表示するようになりました:
$ ps axo stat,ppid,pid,comm | grep -w defunct
このコマンドは、状態、parentID、プロセスID、ゾンビプロセスを実行しているプログラム(このチュートリアルで実行したゾンビプログ
これで、単純なダミーゾンビプロセスを作成する方法を学びました。 これにより、システム上でどのように見えるか、およびテスト目的でどのように使用できるかを知ることができます。Ubuntu18.04LTSでダミーゾンビプロセスを作成する方法