在我的问题中,我将得到一个数字 n。我需要创建一个 cron 配置以在 n 天运行一次脚本。
例如,如果 n=20,则脚本应每 20 天运行一次。
有什么建议吗?
最佳答案
如果不是不可能的话,该配置将非常丑陋(您可能必须每天枚举它将被执行的每一天......)
创建配置要容易得多,因此它每天都会执行。然后在脚本中(或在包装脚本中)检查它是否应该实际执行。
这个检查可以用
- 算术,类似于:
daycounter=$(( ($(date +%s)/(60*60*24) ) % 20))
- 带有一个状态文件,其中包含存储最后执行时间的创建日期
基于文件的解决方案具有更高的容错性,如果您的服务器在计划的那一天宕机,它将在第二天执行,而算法计划在下一个周期(20 天后)。
如果将功能包装在一个文件中,您的 cron 条目看起来会非常漂亮:
10 1 * * * executeeveryxday nameofthestatefile 20 "command to execute"
当然,如果您有更多的服务器和条目,并希望从一个中心位置进行管理,也许从数据库中获取任务会更好。
关于algorithm - 使用 bash 生成 cron 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12314275/