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であり、それを強制終了すると、自分で再起動します!
そして、それはさらに恐ろしい話になるでしょう!