我编写了一个长期运行的工具。不幸的是,它不太可靠,有时会崩溃。我把它称为myscript.py
。
我使用名为的启动器脚本运行它launch
,该脚本为我的脚本设置了一些环境变量。
有没有办法运行./launch
,但如果它崩溃了,它会在两分钟后自动重新启动,如果它再次崩溃,它会等待四分钟,然后如果它再次崩溃,它会等待八分钟,依此类推,但重试之间永远不会等待超过 64 分钟?
是否有可以安装的命令可以自动执行此重启功能?或者,如果可能的话,我可以使用自定义 shell 脚本或可能使用 systemd 服务来执行此操作。
答案1
Bash shell 脚本:
#!/bin/bash
# Set initial wait in miutes
# ... It will be multiplied by 2 while the result is =< than "$limit"
min="2"
# Set maximum wait limit in minutes
limit="64"
# Set scrpt filename
name="myscript.py"
while sleep 5
do
if ! /bin/pgrep -f "$name" &> /dev/null
then
# Script is not running
sleep "${min}m"
[[ "$((min * 2))" -le "$limit" ]] && min="$((min * 2))"
# Add your command to start the script/launcher on the next line
# ... Send it to the background with "&" so the loop continues
# example ---> /bin/bash /home/user/dir/launch &
fi
done