Laravel 5 中的调度程序与我本地系统中的 crontab 不工作

Scheduler in Laravel 5 with crontab in my local system does not work

当我 运行 'php artisan schedule:run' 在终端中时,它正在执行预期的操作,但是当我将我的 crontab 配置为自动执行时,它没有任何效果。 我在 Kernel.php 中的代码是:

$schedule->call(function () {
            $example=Example::orderBy('updated_at', 'asc')->limit(1)->first();
            $example->touch();
        })->everyMinute();

我在 crontab -e 中输入

* * * * * php /path/to/laravel/project schedule:run 1>> /dev/null 2>&1

我尝试在 crontab 文件中执行其他命令,其他命令都有效。所以我想这可能与 php 有关,但我没有任何输出来知道问题出在哪里。

知道如何解决这个问题吗?

我认为你的路径不完整。您必须在您的路径中包含 Artisan。

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

例如:

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

有关详细信息,请参阅 Laravel 文档:Task Schedule

编辑

如果您想查看 Cronjob 的输出,则必须删除以下内容:

>> /dev/null 2>&1

有时问题是 Cron 不知道 PHP 在哪里。在这种情况下,您必须定义本地 php 安装的路径。在我的机器中,

crontab -e

有条目

* * * * * /usr/local/bin/php /home/younus/TruckJee/Code/Panel/artisan schedule:run

它按计划完美运行。另外,要检查您的 crobjobs 是否 运行,请使用

cat /var/log/syslog

它应该显示您的 cronjob 是否实际上是 运行。 (即)

May 23 16:21:01 farveaz cron[1105]: (root) RELOAD (crontabs/root)
May 23 16:21:01 farveaz CRON[6812]: (younus) CMD (/usr/local/bin/php /home/younus/TruckJee/Code/Panel/artisan schedule:run)
May 23 16:21:01 farveaz CRON[6811]: (CRON) info (No MTA installed, discarding output)