crontab 并没有真正启动计划

crontab does not really start schedule

IN a laravel 我有一个 SnapShot 方法可以将数据复制到统计模型。

当我运行

/var/www/laravel/artisan  schedule:run

数据被添加到统计中-table。

现在我已将以下行添加到 /etc/crontab

* * * * *  php /var/www/laravel/artisan schedule:run >> dev/null 2>&1

在我的 /var/log/syslog 我读到:

 Jul 16 08:53:01 cluego CRON[24524]: (root) CMD (cd /usr/bin/php7.4  && php artisan schedule:run /dev/null 2>&1)
Jul 16 08:53:01 cluego CRON[24523]: (CRON) info (No MTA installed, discarding output)
Jul 16 08:54:01 cluego CRON[24599]: (root) CMD (php /var/www/laravel/artisan schedule:run /dev/null 2>&1)
Jul 16 08:54:01 cluego CRON[24598]: (CRON) info (No MTA installed, discarding output)


laravel.log显示:

[2021-07-16 09:25:01] production.ERROR: No arguments expected for "schedule:run" command, got "/dev/null". {"exception":"[object] (Symfony\Component\Console\Exception\$
[stacktrace]

当我手动 运行 时,我得到以下结果:

root@xxxx:/var/www/laravel# php artisan schedule:run
Running scheduled command: '/usr/bin/php7.4' 'artisan' statistics:snap > '/dev/null' 2>&1

一个数据点被添加到 Statistics-table,就像它应该的那样。

谁能看出为什么 cronjob 不像手册 schedule:run 那样 运行 宁 statistics:snap 命令?

问题是您的 coron 作业格式错误。从文档来看,它应该是这样的:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

所以在你的情况下它应该是这样的:

* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1

我想您也可以尝试 运行 您的版本,但使用 php 的完整路径而不是仅 php 或使用 /dev/null 而不是 dev/null

* * * * *  php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1
* * * * *  /path/to/php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1