sudoを使用して別のプロセスを作成する

sudoを使用して別のプロセスを作成する

私はtestShellというシェルスクリプトを書いた。次のコマンドを使用してこのシェルを実行します。

sudo sh testShell

その後、使用します。 ps -ef|grep testShell|grep -v grep

生成されたプロセスを確認してください。私はシステムが私のために2つのプロセスを作成したことを発見しました。

imcas@ubuntu:~$ ps -ef|grep testShell|grep -v grep
root      5687 32482  0 11:37 pts/1    00:00:00 sudo sh testShell
root      5688  5687 48 11:37 pts/1    00:00:08 sh testShell

ppidでは、1つは親であり、もう1つは子であることがわかります。今実行中のシェルスクリプトを終了したいと思います。私は何をすべきですか?子供を直接殺すべきですか、それとも親を殺すべきですか? kill child を使用すると、 kill -9 5688 子供と両親が両方とも死ぬことがわかりました。しかし、kill parentを使用すると、 kill -9 5687 親だけが死にます。誰でも理由を教えてもらえますか?

ベストアンサー1

Linuxでは、親プロセスが終了すると、子プロセスは孤立プロセスになります。しかし、「情熱的な」initプロセスは継続を可能にする孤児プロセスを採用します。

親プロセスとその子プロセスを終了するには、次を使用できます。

pkill -TERM -P <parent's PID>

(注:孤児プロセスはゾンビプロセスと同じではありませんが、これは別の質問です:-)

おすすめ記事