通过 cron 终止并重新启动进程

通过 cron 终止并重新启动进程

我在远程机器上运行 python 脚本,它会定期停止响应,因此我通过 ssh 登录,终止现有进程,然后重新启动它。我每周必须这样做几次,当我不在时,这会导致长时间停机。我想通过 cron 每小时重新启动一次 - 但除非我先终止该进程,否则重新启动不起作用。我该如何通过 cron 终止该进程?或者是否有更有效的解决方案。

答案1

一种有效的方法是更改​​脚本,关闭所有输入流、套接字等,然后再次打开它(就像完全重启一样)。

但你的方法也很好,下面是如何做到的:man killall

答案2

启用终止并重新启动进程的一个简单方法是使用killall -9 $name_of_binary命令。

更复杂的方法是创建一个包含进程 PID 的文件。例如,可以这样启动:

$name_of_binary &
echo $! > $pidfile

然后可以像这样终止该进程:

kill -9 $(cat $pidfile) && rm $pidfile

您还可以加入$pidfile在开始流程之前不存在的检查等等。

相关内容