プロセスを追跡するスクリプトがあり、そのプロセスが終了した場合は再生成されます。追跡スクリプトに sigterm (たとえば) を与えることによって、追跡スクリプトがプロセスを強制終了するように指示された場合、追跡スクリプトにもプロセスを強制終了させたいと考えています。つまり、追跡スクリプトを強制終了すると、追跡しているプロセスも強制終了し、再生成して終了する必要はありません。
いくつかの投稿をまとめて (たとえば、PID ファイルを使用しないなどのベスト プラクティスだと思います)、次のようになります。
#!/bin/bash
DESC="Foo Manager"
EXEC="python /myPath/bin/FooManager.pyc"
trap "BREAK=1;pkill -HUP -P $BASHPID;exit 0" SIGHUP SIGINT SIGTERM
until $EXEC
do
echo "Server $DESC crashed with exit code $?. Restarting..." >&2
((BREAK!=0)) && echo "Breaking" && exit 1
sleep 1
done
したがって、このスクリプトを 1 つの xterm で実行するとします。そして、別の xterm で次のようなスクリプトを送信します。
kill -HUP <tracking_script_pid> # Doesn't work.
kill -TERM <tracking_script_pid> #Doesn't work.
トラッキング スクリプトが終了しません。コマンドラインから FooManager.pyc を実行すると、SIGHUP と SIGTERM で終了します。とにかく、ここで何が間違っている可能性がありますか?おそらくそれを行うにはまったく別の方法がありますか?
ありがとう。