我有一个脚本可以跟踪一个进程,如果该进程终止,它将重新生成它。如果通过给跟踪脚本一个 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
所以,现在如果我在一个 xterm 中运行这个脚本。然后在另一个 xterm 中,我发送脚本如下:
kill -HUP <tracking_script_pid> # Doesn't work.
kill -TERM <tracking_script_pid> #Doesn't work.
跟踪脚本没有结束或任何事情。如果我从命令行运行 FooManager.pyc,它将在 SIGHUP 和 SIGTERM 上死掉。无论如何,我在这里做错了什么,也许有一种完全不同的方法可以做到这一点?
谢谢。