我有一个每小时运行一次的 cronjob,有时运行时间太长,有什么方法可以设置最大运行时间,如果超过该运行时间,该作业就会被终止?
这是在 Ubuntu 10.04 服务器上。
谢谢,jebw
答案1
尝试该timeout
命令。例如:
0 * * * * timeout -2 3540 /path/to/your_command.sh
如果 59 分钟内仍未完成,将会向您的命令发送 SIGINT。
答案2
不。我们的方法是制作一个带有锁定文件的脚本,并让脚本在再次开始运行之前检查该锁定文件,这样它可以检查它是否已在运行并决定是否运行,是否等待另一个结束或是否在运行之前终止另一个。
锁文件只是一个空文件或一个将其他脚本PID
保存在某处的文件,例如/var/run
或/var/lock
。
答案3
cakemox 的答案是最好的。否则,只需将 pid 放入文件中,或者在一分钟前在另一个 cronjob 上使用 killall 来终止该进程。