我读了这个问题: “How do I write a bash script to restart a process if it dies"
解决方案是:
until myserver; do
echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2
sleep 1
done
这适用于从脚本启动的Tomcat / Jetty进程吗?
我是否使用“kill”测试成功以查看进程是否重新启动?
答案 0 :(得分:3)
如果脚本返回answer at that link中指定的退出代码,那么它应该可以工作。如果你再回过头来阅读那个答案,暗示你不应该使用kill
。使用until
将测试启动,因为失败的启动应返回非零退出代码。将“myserver”替换为脚本名称。
您的脚本可以有陷阱来处理各种信号和其他条件。这些陷阱处理程序可以设置适当的退出代码。
这是一个演示。子shell (echo "running 'dummy'"; sleep 2; exit $result)
是脚本的代表:
result=0
until (echo "running 'dummy'"; sleep 2; exit $result)
do
echo "Server 'dummy' crashed with exit code $?. Respawning.." >&2
sleep 1
done
通过设置result=1
并再次运行until
循环,尝试使用失败的“虚拟”。
答案 1 :(得分:2)
while true
do
if pgrep jett[y] 1>/dev/null;then
sleep 1
else
# restart your program here
fi
done