子プロセスを終了せずに親シェル スクリプト プロセスを終了するにはどうすればよいですか?

子プロセスを終了せずに親シェル スクリプト プロセスを終了するにはどうすればよいですか?

PHP プロセスを実行するシェル スクリプトを作成しました。しかし、バックグラウンドでは実行されていませんでした。実行中の PHP プロセスを終了せずに、シェル スクリプトを終了できますか?

答え1

はい、ただし最初に分離する必要があります。子プロセスを親プロセスから分離するには、次を実行します。

kill -20 PID

kill -18 PID

参照:https://stackoverflow.com/questions/625409/how-do-i-put-an-already-running-process-under-nohup

プロセスと同じターミナルを使用している場合は、 と入力してctrl-z親を停止し、 を使用してps -efphp の子の PID を見つけます。上記の kill 行を使用して、子を親から効果的に分離します。次に、fgシェル スクリプトに戻ると、正常に終了するはずです。または、プロンプトで PID または名前を直接指定してシェル スクリプトを実行することもできますkill -9。そうしないと、親を kill すると (最終的に) 子が削除されます。

関連情報