我有同样的工作,适用于单台服务器上的 10 个并行 postgres 实例。它们应该每 6 小时运行一次,但不是全部在同一时间运行。
11 */6 * * * my_command
运行于0:11
, 6:11
, 12:11
,18:11
因此,我可以通过定义分钟(最多 30 分钟)将它们区分开来。但我想要更多,例如跑步0,6,12,18
与跑步,即2,8,14,20
所以我的问题是......有没有办法让另一项工作运行2:11
,即8:11
,,,14:11
20:11
或者我必须说11 */6 * * * sleep 120m && my_command
一下替代执行方式吗?
使用
0,6,12,18
或2,8,14,20
为指定这些小时列表的标准方法。*/6
,虽然大多数 cron 实现都支持,但并非标准。所以这里只需使用:
另请参阅
sleep "$((120 * 60))"
或,了解或sleep "$((2 * 60 * 60))"
的标准等效项。sleep 120m
sleep 2h
话虽如此,至少在 Debian 和衍生产品上找到的 cron 实现,您还可以结合范围和间隔,因此您应该能够执行以下操作:
(或用它
0-23
来代替*
第一个,以更清楚地表明两者之间的区别)。