bash:每隔x天做一次工作

voi*_*Any 0 bash cron date

我有一个每天通过cron运行的bash脚本.

在这个bash中我想运行一些命令,但每隔x天(x是固定的,将是3,4或5我目前不知道)

我可以测试一下除法日/ x的剩余部分是否等于0

day_of_month%x = 0

我将在一个月内工作但不总是在一个月之间,例如4月份的月份 - 可能是x = 3

1 2 3 4 5 6 7 8 9 ... 27 28 29 30 31 1 2 3 4 5 6 7 8 9 ... 27 28 29 30 
    x     x     x ...  x        x        x     x     x ...  x        x
Run Code Online (Sandbox Code Playgroud)

这不是什么大问题,但有没有其他方法可以做到这一点?

PS:我不想爆炸我的脚本并制作2个cron作业(每天一个:*,另一个xvevery x天:*/x)

sle*_*ske 6

一个简单的解决方案是使用"一年中的一天"而不是一个月中的某一天.然后不同的月份长度没有问题.当然,你还会在年底遇到问题."年中的一天"可通过date +%j.

如果仍然不能接受,你可以使用1970年以来的秒数(date +%s),然后除以天数*24*60*60,然后使用其余部分.你仍然会遇到闰秒的问题,否则它应该是正确的.