我正在尝试使用crontab生成每个月的最后一天的报告。
这是我的规则:
45 20 31 1,3,5,7,8,10,12 * php console make:export > /dev/null 2>&1
45 20 30 4,6,9,11 * php console make:export > /dev/null 2>&1
45 20 28 2 * php console make:export > /dev/null 2>&1
*/2 * * * * php ..cronjobs/cron_photos_tri.php >/dev/null 2>&1
但是,尽管同一文件中的所有其他行都工作正常,但这些行永远不会被触发。这是2018年7月7日最后一天的系统日志:
Jul 31 20:40:01 CRON[19453]: (root) CMD (php ...cronjobs/cron_photos_tri.php >/dev/null 2>&1)
Jul 31 20:42:01 CRON[19880]: (root) CMD (php ...cronjobs/cron_photos_tri.php >/dev/null 2>&1)
Jul 31 20:44:01 CRON[20248]: (root) CMD (php ...cronjobs/cron_photos_tri.php >/dev/null 2>&1)
Jul 31 20:46:01 CRON[20599]: (root) CMD (php ...cronjobs/cron_photos_tri.php >/dev/null 2>&1)
如您所见,cron_photos_tri.php被触发,但make:export未被触发。为什么?
答案 0 :(得分:0)
在crontab中,您需要在每个月的月底(11:59 pm)运行命令:
59 23 28-31 * * root [ $(date +\%d -d tomorrow) = 01 ] && executioncode
今天如何进行测试(2018-08-01 23:59 pm)
59 22 01-03 * * root [ $(date +\%d -d tomorrow) = 02 ] && executioncode
该代码将在2018-08-01 10:59 pm
上执行
EXPLAINE CRON:
root [ $(date +\%d -d tomorrow) = 01 ]
表示,如果明天等于1,并且当前日期在28到31之间,则平均值是月份的最后一天