shell 脚本监控

ssm49v7z  于 2023-06-30  发布在  Shell
关注(0)|答案(1)|浏览(92)

我有一个脚本,它可以监视另一个脚本,如果它崩溃了,它会自动启动它。

while { myscript;}; do
    echo "'myscript' crashed. Restarting..." >&2
    sleep 1
done

但有时脚本会挂起,即使脚本不工作,它仍然会运行,但myscript会在这种情况下打印一些东西。它会打印“script dead”,所以当它打印这个时,我想杀死脚本并重新启动。我怎么能这样做,请。

mznpcxlj

mznpcxlj1#

实际上你可以使用pgrep函数来检查运行进程。
因此,在这里我添加了while true逻辑,以便一旦在运行状态下未发现进程,则else条件将起作用,并且进程将重新启动。

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

相关问题