如何有时自动重新启动 Python 脚本?

如何有时自动重新启动 Python 脚本?

我编写了一个长期运行的工具。不幸的是,它不太可靠,有时会崩溃。我把它称为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

查看更多解释和其他方法这里这里

相关内容