我可以限制cronjob的运行时间吗


8

我有一个cronjob,它每小时运行一次,偶尔花很长时间才能运行,有什么办法可以设置最大运行时间?如果超过该时间,该工作就会被终止?

这是在Ubuntu 10.04服务器上。

谢谢jebw

Answers:


11

尝试timeout命令。例如:

0 * * * * timeout -2 3540 /path/to/your_command.sh

如果SIGINT在59分钟内未完成,则会将SIGINT发送给您的命令。


好信息。您错过了“ -s”,但它是“超时-s 2 3540 <command>”。
Fish Monitor

通过apt在ubuntu上安装的usage: timeout [-signal] time command...
脚本

“ dpkg -S bin / timeout”有什么作用?实际上,我的是来自coreutils的,是纯GNUish的。
Fish Monitor

timeout: /usr/bin/timeout
Cakemox 2011年

10.04,与OP相同。
Cakemox 2011年

0

不。我们的方法是制作一个带有锁定文件的脚本,并在再次开始运行之前让脚本检查该锁定文件,以便它可以检查它是否已经在运行,并确定它是否在运行,是否等待其他文件运行。结束,或者在运行前杀死另一端。

锁定文件只是一个空文件,或者是带有其他脚本的文件,该脚本PID保存在/var/run或某处/var/lock


0

cakemox的答案是最好的。否则,只需将pid放入文件中,或在一分钟前在另一个cronjob上使用killall即可终止该进程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.