在我的问题中,我将得到一个数字 n。我需要创建一个 cron 配置以在 n 天内运行一次脚本。
例如,如果 n=20,脚本应该每 20 天运行一次。
有什么建议吗?
该配置将非常丑陋,如果不是不可能的话(您可能必须每天枚举它将被执行..)
创建配置要容易得多,因此每天都会执行。然后在脚本中(或在包装器脚本中)检查它是否应该实际执行。
这个检查可以用
daycounter=$(( ($(date +%s) / (60*60*24) ) % 20))
基于文件的解决方案更具容错性,如果您的服务器在计划的当天停机,它将在第二天执行,而算法计划在下一个周期(20 天后)。
如果您将功能包装在一个文件中,您的 cron 条目将看起来非常好:
10 1 * * * executeeveryxday nameofthestatefile 20 "command to execute"
当然,如果您有更多的服务器和条目,并且想从一个中心位置进行管理,那么从数据库中获取任务可能会更好。