Crontab设置 - 每55分钟执行一次脚本

时间:2016-10-11 15:19:59

标签: linux export crontab scheduler

我在创建crontab设置时发现了一件有趣的事情。

我使用了这个命令:

crontab -e

并填写此行:

*/55 * * * * export DISPLAY=:0 && /home/user/Documents/script.sh $2>/dev/null

我的想法是创建计划程序,每55分钟启动script.sh

但是这个脚本在这个时候执行(例如):

08:55, 09:00, 09:05, 09:55, 10:00, 10:05, ...

我不知道为什么。

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:2)

替换这样的脚本,它应该可以工作。

 */5 * * * * [ $(( $(date +%s) / 60 % 55 )) -eq 0 ] && export DISPLAY=:0 && /home/user/Documents/script.sh $2>/dev/null

分钟小时日 - 月 - 年

*   any value
,   value list separator
-   range of values
/   step values

答案 1 :(得分:1)

另一个选择是自我复制' at'工作。只有优于cron的优点是它不那么明显,而且如果你需要它不是每隔X分钟开始,而是在最后一个工作完成后X分钟。因此,您的脚本将只包含一行来创建新的' at'退出之前的工作。类似的东西:

echo "/full/path/to/my/script > /root/myScript.at.log" | at now + X minutes

答案 2 :(得分:0)

所以每隔5分钟就会这样做:

从1开始经过的秒数.1。1970年除以60 =多少分钟

echo $(日期+%s) 1476201056 ... 第二

echo $(($(date +%s)/ 60)) 24603351 ... 分钟

之后,它会在分钟数上使用模数

当模数的结​​果为0时,它将发送TRUE值。

这是一个典型的逻辑 AND

[$((......)) - eq 0] && 导出DISPLAY .. && ... / script .SH

谢谢。

这真的很有帮助:)