Планирование задач Laravel - задание Cron не выполняет запланированные команды - PullRequest
0 голосов
/ 19 июня 2019

У меня есть проект Laravel 5.7 , работающий на CentOS.В проекте запланировано одно задание:

$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, но если я cd до my-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, а база данных никогда не изменялась с помощью побочных эффектов команды.

(активная) служба cron с 2019-05-30 :

$ 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, чтобы выяснить, почему она не вызывает задачу Laravel после 2019-05-30 ?

...