1

在我的问题中,我将得到一个数字 n。我需要创建一个 cron 配置以在 n 天内运行一次脚本。

例如,如果 n=20,脚本应该每 20 天运行一次。

有什么建议吗?

4

1 回答 1

2

该配置将非常丑陋,如果不是不可能的话(您可能必须每天枚举它将被执行..)

创建配置要容易得多,因此每天都会执行。然后在脚本中(或在包装器脚本中)检查它是否应该实际执行。

这个检查可以用

  • 算术,例如:daycounter=$(( ($(date +%s) / (60*60*24) ) % 20))
  • 带有一个状态文件,它的创建日期存储了上次执行时间

基于文件的解决方案更具容错性,如果您的服务器在计划的当天停机,它将在第二天执行,而算法计划在下一个周期(20 天后)。

如果您将功能包装在一个文件中,您的 cron 条目将看起来非常好:

10 1 * * * executeeveryxday nameofthestatefile 20 "command to execute"

当然,如果您有更多的服务器和条目,并且想从一个中心位置进行管理,那么从数据库中获取任务可能会更好。

于 2012-09-07T08:58:46.443 回答