質問番号 1 に答えるには:
プロセスが子プロセスを生成すると、子プロセスはそれぞれ独自の PID を持ちます。各子の PPID (親のプロセス ID) は、親プロセスの PID です。親プロセスが停止すると、子プロセスは孤立します。孤立したプロセスは、PID が 1 のシステム初期化プロセスによって自動的に取得されます。
問題
あなたのスクリプトはおそらくゾンビを作成しています あなたの kill -9
のせいで コマンド; jjlin answer から示唆されているように、強制されずにプロセスを突然強制終了することは決して良い習慣ではありません。
man bash
から 読むことができます:
答え #1: プロセス init PID 1 を持っています この Linux では、PID 1 の親が割り当てられます (init に割り当てられるため)。 ).
答え #2: 簡単に殺すことはできません 死んだばかりだから ... 親が init
の場合 しばらく待つだけで十分でしょう。
システムからゾンビを削除するには、 kill コマンドを使用して SIGCHLD シグナルを手動で親に送信できます。親プロセスがまだゾンビの取得を拒否している場合、次のステップは親プロセスを削除することです。プロセスが親を失うと、init が新しい親になります。 init は定期的に wait システム コールを実行し、init を親として持つゾンビを刈り取ります。 [1]
いつかこのアイデアが浮かんだ場合に備えて:to #kill -9 init
root 権限を持つプロセスは、コンピュータを送電網から物理的に切り離すのと同等のソフトウェアです。 [:-)]
ただし、ゾンビ プロセス ps
の出力で識別できます STAT に「Z」があることによるコマンド 桁。次の行を使用して簡単に識別できます
ps -aux | grep Z
Linux ゾンビの世界に関する参考文献 :
- 再起動せずにゾンビ プロセスを強制終了する方法はありますか?
- ゾンビ プロセスとは
- ゾンビプロセスを強制終了する方法
- [1] ネット上の多くのソースから