我在创建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, ...
我不知道为什么。
有人可以解释一下吗?
答案 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
谢谢。
这真的很有帮助:)