我有一个脚本,它可以监视另一个脚本,如果它崩溃了,它会自动启动它。
while { myscript;}; do echo "'myscript' crashed. Restarting..." >&2 sleep 1 done
但有时脚本会挂起,即使脚本不工作,它仍然会运行,但myscript会在这种情况下打印一些东西。它会打印“script dead”,所以当它打印这个时,我想杀死脚本并重新启动。我怎么能这样做,请。
mznpcxlj1#
实际上你可以使用pgrep函数来检查运行进程。因此,在这里我添加了while true逻辑,以便一旦在运行状态下未发现进程,则else条件将起作用,并且进程将重新启动。
pgrep
while true; do if pgrep -f myscript >/dev/null; then echo "'myscript' is running well..." sleep 1 else echo "'myscript' is not running so restarting..." >&2 # Kill the previous instance pkill -f -x myscript sleep 1 fi done
1条答案
按热度按时间mznpcxlj1#
实际上你可以使用
pgrep
函数来检查运行进程。因此,在这里我添加了while true逻辑,以便一旦在运行状态下未发现进程,则else条件将起作用,并且进程将重新启动。