我正在尝试让 cron 作业在隔天运行...所以如果一个今天运行,另一个明天运行,依此类推。我知道
* * */2 * * command
将每隔一天运行一次...但无论什么日期,我都需要在一年中抵消另一个...有什么想法会在隔天运行什么命令吗?
最佳答案
这是一个让你入门的表达式
if ((c=`date -d 3/13/2012 -u +%s` / 86400 % 2 == 1)); then echo odd; else echo even; fi
命令 date -u +%s
返回自 1/1/1970 00:00:00 UTC
以来的秒数。 -u
选项使其开始和结束时间都使用 UTC,因此结果与时区无关。然后它除以 86400 计算天数,然后确定它是偶数还是奇数。对于奇数,返回码为 0(shell true),对于偶数,返回码为 1(shell false)。
与其他解决方案相比,它的优势在于它不会在一个月或一年的边界以奇数天数连续为您提供两个偶数或奇数,因为它是从 1/1/1970 开始计算的,不考虑年份或几个月。
请注意,此方法并不完美。由于偶尔添加了闰秒,该方法可能会在午夜的几秒内做出错误的决定。
关于linux - 交替的 cron 作业问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9675510/