我在远程机器上运行 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
在开始流程之前不存在的检查等等。