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

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

Happy Halloween Open SOURCE-rers!

これがエポックと同じくらい古い物語です 時間。 CとUnix、そして(後で)Linuxがあったので、ゾンビがありました。 。具体的には、ゾンビプロセスとしてマークされるプロセスがあります。 。一部の人には誤解され、他の人には無視され、killしようとする私たちの多くの努力の影響を受けません。 これらのプロセスはあまり成功していません。なぜですか?

Linuxのプロセスとは何ですか?

Linuxのプログラムが実行されるとすべてが始まり、実行されると、その実行中のインスタンスはプロセスと呼ばれます。 psを使用すると、Linux環境のすべてのプロセスを確認できます。 コマンド。

$ ps -ax
        PID TTY         STAT   TIME COMMAND
        1 ?     Ss      0:01 /usr/lib/systemd/systemd rhgb --switched-root --sys
        2 ?     S       0:00 [kthreadd]
        3 ?     I<      0:00 [rcu_gp]
        4 ?     I<      0:00 [rcu_par_gp]

プロセスが別のプロセスを開始し、最初のプロセスを2番目のプロセスの親にする場合があります。 pstree コマンドは、システム上のプロセスの「系図」を確認できる優れたツールです。

$ pstree -psn
systemd(1)─┬─systemd-journal(952)
        ├─systemd-udevd(963)
        ├─systemd-oomd(1137)
        ├─systemd-resolve(1138)
        ├─systemd-userdbd(1139)─┬─systemd-userwor(12707)
        │                     ├─systemd-userwor(12714)
        │                     └─systemd-userwor(12715)
        ├─auditd(1140)───{auditd}(1141)
        ├─dbus-broker-lau(1164)───dbus-broker(1165)
        ├─avahi-daemon(1166)───avahi-daemon(1196)
        ├─bluetoothd(1167)

すべてのプロセスには、システム内で番号が割り当てられます。プロセスID番号1は、ブートプロセス中に実行される最初のプロセスに割り当てられ、PID1以降のすべての後続プロセスはその子孫です。 PID1プロセスはinit 、これはLinuxのほとんどの新しいバージョンでは、systemdへの単なるシンボリックリンクです。 プログラム。

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

killコマンドでプロセスを終了する

killを使用して、Linuxシステムのプロセスを終了できます。 コマンド 名前にもかかわらず、kill コマンドと、pkillなどの他のセット およびkillall SIGNALSを1つ以上のプロセスに送信するように作成/設計されました。指定しない場合、送信されるデフォルトのSIGNALは、プロセスを終了するためのSIGTERMシグナルです。

親プロセスが停止または強制終了され、その子プロセスが親の終了に従わない場合、そのプロセスを孤立プロセスと呼びます。 。

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

一方、ゾンビプロセスを強制終了することはできません。なぜあなたは尋ねるかもしれませんか?ええと、彼らはすでに死んでいるからです!

すべての子プロセスは、終了するとゾンビプロセスになり、親によって削除されます。プロセスがその存在を終了し、使用していたリソースを解放しても、その名前はOSプロセステーブルに残ります。次に、プロセステーブルからその名前を削除するのは親のプロセスジョブです。それが失敗すると、ゾンビプロセスが発生します。これは、実際にはプロセスではなく、OSのプロセステーブルのエントリにすぎません。

これが、killを実行しようとする理由です。 -9でもコマンド 無効な(ゾンビ)プロセスの(SIGKILL)オプションは、強制終了するものがないため、機能しません。

したがって、ゾンビプロセスを強制終了するには、プロセスリスト(プロセステーブル)からその名前を削除する場合のように、その親を強制終了する必要があります。たとえば、PID5878がゾンビプロセスであり、その親がPID 4809である場合、ゾンビ(5878)を強制終了するには、親(4809)を終了します。

$ sudo kill -9 4809  #4809 is the parent, not the zombie

ゾンビについての私の最後の警告の言葉。親プロセスを強制終了するときは、十分に注意してください。プロセスの親がPID1であり、それを強制終了すると、自分で再起動します!

そして、それはさらに恐ろしい話になるでしょう!


Linux
  1. Linuxの特定のポートで実行されているプロセスを強制終了する方法は?

  2. コマンドを使用してLinuxでプロセスを強制終了する方法は?

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

  1. Linuxにvtopをインストールする方法

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

  3. Linux の特定のポートで実行されているプロセスを強制終了するには?

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

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

  3. Linux でプロセスを一時停止/再開する方法