GNU/Linux >> Linux の 問題 >  >> Linux

ゾンビプロセスとは何ですか?ゾンビプロセスを見つけて殺す方法は?

通常のLinuxユーザーの場合、「ゾンビプロセス」という用語に遭遇したことがあるはずです。 ’。では、ゾンビプロセスとは何ですか?それらはどのように作成されますか?それらはシステムに有害ですか?これらのプロセスを強制終了するにはどうすればよいですか?これらすべての質問に対する答えを読み続けてください。

ゾンビプロセスとは何ですか?

したがって、プロセスがどのように機能するかは誰もが知っています。プログラムを起動し、タスクを開始します。タスクが終了したら、そのプロセスを終了します。プロセスが終了したら、プロセステーブルから削除する必要があります。

現在のプロセスは「システムモニター」で確認できます。

pidを親プロセスのIDに置き換えて、親プロセスが停止して完了したすべての子プロセスを削除するようにします。次のように想像してみてください。「道路の真ん中で死体を見つけ、死体の家族に電話すると、彼らはその死体を道路から運び去ります。」しかし、多くのプログラムは、これらの子ゾンビを削除するのに十分にプログラムされていません。なぜなら、もしそうなら、そもそもそれらのゾンビを持っていないからです。したがって、子ゾンビを削除することが保証されているのは、親を殺すことだけです。

ただし、これらのプロセスの一部は、実行が完了した後もプロセステーブルに残る場合があります。

ただし、これらのプロセスの一部は、実行が完了した後もプロセステーブルに残る場合があります。

したがって、実行期間が終了したものの、プロセステーブルにまだ存在するこれらのプロセスは、「ゾンビプロセス」と呼ばれます。

そしてそれらはどのように正確に作成されますか?

プログラムを実行するたびに、親プロセスと多くの子プロセスが作成されます。これらの子プロセスはすべて、カーネルによって割り当てられたメモリやCPUなどのリソースを使用します。

これらの子プロセスの実行が完了すると、Exit呼び出しを送信して終了します。このExit呼び出しは、親プロセスが読み取る必要があります。親プロセスは、後でwaitコマンドを呼び出して、子プロセスのexit_statusを読み取り、子プロセスをプロセステーブルから削除できるようにします。親が子プロセスによって正しく送信されたExit呼び出しを読み取ると、プロセスはプロセステーブルから削除されます。

ただし、親が子プロセスからの終了呼び出しの読み取りに失敗した場合、すでに実行が終了し、現在は停止している子プロセスは、プロセステーブルから削除されません。

ゾンビプロセスはシステムに有害ですか?

いいえ。 ゾンビプロセスは、リソースを使用したり、他のプロセスに影響を与えたりすることなく、作業を行っていないため、ゾンビプロセスを使用しても害はありません。ただし、プロセステーブルのexit_statusおよびその他のプロセス情報はRAMに格納されるため、ゾンビプロセスが多すぎると問題になる場合があります。 このように想像してみてください:

あなたは建設会社の所有者です。あなたは彼らがどのように働くかに応じてあなたのすべての労働者に毎日の賃金を支払います。労働者は毎日建設現場に来て、そこに座っているだけです。あなたは彼にお金を払う必要はありません。彼は何の仕事もしていません。彼は毎日来て座っているだけです、それだけです!」

そのような労働者はゾンビプロセスの生きた例です。 しかし、 ゾンビ労働者が多いと、工事現場が混雑し、実際に働いている人にとっては大変になるかもしれません。

では、ゾンビプロセスを見つける方法は?

端末を起動し、次のコマンドを入力します– ps aux | grepZこれですべてのゾンビプロセスの詳細がプロセステーブルに表示されます。

ゾンビプロセスを強制終了する方法

通常、SIGKILLコマンドを使用してプロセスを強制終了しますが、ゾンビプロセスはすでに停止しています。すでに死んでいるものを殺すことはできません。したがって、次のコマンドを入力します– kill -s SIGCHLD pid pidを親プロセスのIDに置き換えて、親プロセスが停止して完了したすべての子プロセスを削除するようにします。 このように想像してみてください:

あなたは道路の真ん中で死体を見つけ、あなたは死体の家族を呼び、彼らはその死体を道路から連れ去ります。」

しかし、多くのプログラムは、これらの子ゾンビを削除するのに十分にプログラムされていません。なぜなら、もしそうなら、そもそもそれらのゾンビを持っていないからです。したがって、子ゾンビを削除することが保証されているのは、親を殺すことだけです。


Linux
  1. Linuxでゾンビプロセスを強制終了する方法

  2. Linuxでゾンビプロセスを見つけて殺す方法

  3. システムにログオンしているユーザーとそのユーザーが行っていることを確認する方法

  1. Linux プロセス、スレッド、軽量プロセス、およびプロセス状態とは

  2. ゾンビプロセスを強制終了する方法

  3. 古いプロセスを見つけて (そして kill して)

  1. 親が初期化されているプロセスを強制終了する方法は?

  2. Ubuntu でプロセスを見つけて強制終了する方法

  3. Linux:ゾンビ プロセスを見つけて強制終了する