每小时左右重新启动一次 Python 脚本

每小时左右重新启动一次 Python 脚本

所以我有一个 python 脚本,只需在终端中输入脚本名称即可启动它(python SCRIPTNAME.py)

我只是想知道是否可以编写一个脚本或 cron 作业,每小时简单地停止然后启动该 python 脚本?

答案1

最好的方法是通过timeout GNU

timeout -k 3600 python3 /path/to/script.py

其中 -k 代表“终止时间”和以秒为单位的时间。

因此,要让脚本每小时运行、终止并重新启动,你可以这样做

while timeout -k 3600 python3 /path/to/script; do
   sleep 2
done

只是sleep 2在重新启动之前添加一个小的延迟


或者考虑使用 Python 中的 Threading 模块来调度脚本的相关部分。请参阅 https://stackoverflow.com/a/50537798/3701431

答案2

听起来你想守护进程或者为您的 Python 脚本创建服务。这就是其他应用程序启动的方式,并且以正确的顺序或在正确的时间启动。

您将需要systemd为您的 Python 脚本创建一个服务,然后通过 与其进行交互systemctl

systemctl restart mypython
systemctl enable mypython

一旦你的脚本以这种方式运行,你就可以设置cron执行任何你需要的操作,这可能是重新启动服务。

根据脚本的目标以及确定脚本是否正常运行的能力,您可以增强服务以报告其是否停止运行,甚至可以研究以下解决方案monit


正如指出的那样,这个答案提供了有用的信息,但包含过时的工具,例如rc.local。除了使用systemd,您还可以跟踪进程的 PID,然后终止该进程并每小时重新运行脚本。

相关内容