首页 > 解决方案 > 写这样的cron作业是否正确?

问题描述

我要执行每个月的前五天和每个月的后五天。这样写对吗?

0 7 24-31,1-5 * * [ `date -d "+ 5 day" +\%e` -le 5 -o `date +\%e` -le 5 ] && /usr/local/bin/php

标签: cron

解决方案


您的单一条目将不起作用,因为月份的天数不同。您需要 crontab 中的多个条目:

0 7 1-5 * * [ date -d "+ 5 day" +\%e -le 5 -o date +\%e -le 5 ] && /usr/local/bin/php
0 7 27-31 1,3,5,7,8,10,12 * [ date -d "+ 5 day" +\%e -le 5 -o date +\%e -le 5 ] && /usr/local/bin/php
0 7 26-30 4,6,9,11 * [ date -d "+ 5 day" +\%e -le 5 -o date +\%e -le 5 ] && /usr/local/bin/php
0 7 24-28 2 * [ date -d "+ 5 day" +\%e -le 5 -o date +\%e -le 5 ] && /usr/local/bin/php

需要更多的思考来处理闰年。


推荐阅读