Laravel任务计划-Cron作业未运行计划的命令

时间:2019-06-19 13:37:07

标签: php laravel cron centos

我在CentOS上生产了一个Laravel 5.7 项目。该项目安排了一项任务:

$schedule->command('import:producers --create --update --afterOrEqual="-5 minutes"')
    ->everyFiveMinutes()
    ->appendOutputTo(
        storage_path('logs/schedule/producers_import.log')
    );

根据logs/schedule/producers_import.log中的最后一条日志,此方法一直有效,直到 2019-05-30 服务器由于某种原因重新启动。

现在计划的任务不是由cron作业“自动”运行,而是如果我cdmy-project并在适当的时间手动运行:

$ php artisan schedule:run
Running scheduled command: '/usr/bin/php' 'artisan' import:producers --create --update --afterOrEqual="-5 minutes" >> '/var/www/my-project/storage/logs/schedule/producers_import.log' 2>&1
  

上面的命令在logs/schedule/producers_import.log中生成一个新日志。

这对我来说很奇怪,因为cron日志显示调度程序正按预期每分钟被调用:

$ cat /var/log/cron

...
Jun 19 08:57:01 my-server-name CROND[29679]: (admin) CMD (php /var/www/my-project/artisan schedule:run >> /dev/null 2>&1)
Jun 19 08:58:01 my-server-name CROND[29724]: (admin) CMD (php /var/www/my-project/artisan schedule:run >> /dev/null 2>&1)
Jun 19 08:59:01 my-server-name CROND[29739]: (admin) CMD (php /var/www/my-project/artisan schedule:run >> /dev/null 2>&1)
Jun 19 09:00:01 my-server-name CROND[29754]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jun 19 09:00:01 my-server-name CROND[29755]: (root) CMD (/bin/bash /etc/SomeOtherScript.sh)
Jun 19 09:00:01 my-server-name CROND[29756]: (admin) CMD (php /var/www/my-project/artisan schedule:run >> /dev/null 2>&1)
Jun 19 09:00:32 my-server-name crontab[29784]: (admin) LIST (admin)
Jun 19 09:01:01 my-server-name CROND[29787]: (root) CMD (run-parts /etc/cron.hourly)
Jun 19 09:01:01 my-server-name CROND[29788]: (admin) CMD (php /var/www/my-project/artisan schedule:run >> /dev/null 2>&1)
Jun 19 09:01:01 my-server-name run-parts(/etc/cron.hourly)[29787]: starting 0anacron
Jun 19 09:01:01 my-server-name run-parts(/etc/cron.hourly)[29798]: finished 0anacron
Jun 19 09:02:01 my-server-name CROND[29813]: (admin) CMD (php /var/www/my-project/artisan schedule:run >> /dev/null 2>&1)
Jun 19 09:03:01 my-server-name CROND[29836]: (admin) CMD (php /var/www/my-project/artisan schedule:run >> /dev/null 2>&1)
  

Laravel任务永远不会被调用,因为它不会在logs/schedule/producers_import.log中生成任何日志,并且数据库也不会因命令的副作用而改变。

2019-05-30 以来的(活动)cron服务:

$ systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-05-30 17:28:05 -04; 2 weeks 5 days ago
 Main PID: 27650 (crond)
   CGroup: /system.slice/crond.service
           └─27650 /usr/sbin/crond -n

Jun 18 11:26:38 my-server-name systemd[1]: Started Command Scheduler.
Jun 18 11:26:38 my-server-name crond[27650]: (CRON) INFO (RANDOM_DELAY will be scaled with f...d.)
Jun 18 11:26:38 my-server-name crond[27650]: (CRON) INFO (running with inotify support)
Jun 18 11:26:38 my-server-name crond[27650]: (CRON) INFO (@reboot jobs will be run at comput...p.)
Hint: Some lines were ellipsized, use -l to show in full.

cron条目:

$ crontab -l
* * * * * php /var/www/my-project/artisan schedule:run >> /dev/null 2>&1

老实说,我不知道如何进行。还有其他服务可以检查状态吗?

我如何更好地监控cron作业,以发现为什么在 2019-05-30 之后不调用Laravel任务的原因?

0 个答案:

没有答案