完成后运行程序 x 分钟

完成后运行程序 x 分钟

我认为我的问题与 cron 作业有点相关,但我不完全确定。

假设我有一个脚本 ( /home/me/myscript.sh) 执行某项操作,可能需要不确定的时间才能完成,例如 10 分钟到 1 小时的范围。我想要的是让脚本运行,并在完成后在一小时内再次运行。是否有任何类型的“调度程序”或我可以用来实现此目的的东西?我正在使用Ubuntu。

答案1

cron听起来不适合这个;上一次运行完成后一小时可以通过while循环完成

#!/bin/sh
while :; do
    some_job_that_takes_a_while
    sleep 3600
done

或者通过at(1)在作业结束时在一小时内安排下一次运行。

$ cat atat
#!/bin/sh
echo running the job
echo $HOME/atat | at now + 1 hours
$ ./atat
running the job
job 4 at 2015-09-30 17:00
$ date
Wed Sep 30 16:00:19 UTC 2015
$ 

可能需要进行健全性检查或timeout在工作中进行检查,以防万一它被卡住,因此后续作业不会运行,直到有人手动杀死它并重新启动。

答案2

最简单的方法是告诉 cron 去做。只需使用它作为 cron 将运行的命令:

/home/me/myscript.sh; sleep 1h; /home/me/myscript.sh

如果您sleep不支持该h后缀,请sleep 3600改用。

或者,编写一个包装脚本,调用它wrapper.sh

#!/usr/bin/env bash

/home/me/myscript.sh
sleep 1h 
/home/me/myscript.sh

并用 cron 运行它。

相关内容