为什么那些 crontab 规则不起作用?

Why are those crontab rules not working?

我正在尝试使用 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

但是,虽然同一文件中的其他每一行都工作正常,但从未触发过这些行。这是 07/2018 最后一天的系统日志:

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。为什么?

这是您在 crontab 中需要的内容,以便在每个月的月底(晚上 11:59)执行命令 运行:

  59 23 28-31 * * root [ $(date +\%d -d tomorrow) = 01 ] && executioncode

如何在今天(2018-08-0123:59下午)进行测试

  59 22 01-03 * * root [ $(date +\%d -d tomorrow) = 02 ] && executioncode

代码将在 2018-08-01 10:59 pm

上执行

解释 CRON:

root [ $(date +\%d -d tomorrow) = 01 ] 表示如果明天等于 1 并且当天在 28 到 31 之间那么意味着是一个月的最后一天