所以我目前正在设计一个每周运行一次的发票系统。我们将客户分成4个周期,每周运行一次。安排Cron作业每周运行一次的最佳方法是什么,但每次根据每月的哪一天都有一个特定的参数。例如,我希望所有在每月8日收到发票的客户在每月8日的凌晨12:00发出。接下来的一周,我想运行完全相同的程序,除了我想在15日运行它。我应该有四个独立的工作,每个工作4个特定的参数,每个月运行一次,或者是否有更简洁的方法将所有内容保存在一个程序中,一个作业每周运行但有不同的参数?我是否在思考它?
答案 0 :(得分:1)
在处理您所描述的敏感业务问题时,我绝不会依赖cron
调度来管理状态。我宁愿把国家管理完全留给该计划。
因此,最好使用存储状态的数据库或文件,以便调度不会影响程序的功能。使用这种方法,您可以拥有一个每周运行一次的cron
作业。
要存储的状态信息(基于您所声明的内容):
该计划必须能够:
答案 1 :(得分:0)
你过度思考它;) 您可以像这样在所有4个周期中输入cron:
0 0 8,15,22,29 * * command
并添加case switch或if语句检查日期的日期+"%d",但这会使任务复杂化。更不用说可读性了。
其他方法是创建一个包装脚本来保存所有' case'上面提到的逻辑并将包装器设置为cron命令。 e.g。
day_of_month=$(date +'%d')
case "${day_of_month}" in
'8') params='your params here' ;;
...
esac
/your/program "${params}"
您始终可以保持简单并使用4个单独的crontab条目。