为什么那些 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 之间那么意味着是一个月的最后一天
我正在尝试使用 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 之间那么意味着是一个月的最后一天