所以我有一个 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,然后终止该进程并每小时重新运行脚本。