Laravel 调度程序可以手动运行但不能自动运行?

Laravel schedular works manually but not automatically?

我的Kernal.php里有这个:

$schedule->call('removeTemporaryFiles')->everyMinute();

当我点击 php artisan schedule:run 时,它就像魅力一样。但我也 运行:

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

但它不会自动 运行。我已经等了一分多钟了,还是没有运行。我做错了什么?

以及主机cron保存在哪里?每分钟运行一次并调用 artisan schedule:run?

为了安排 运行,您需要先将 cron 作业添加到您的 cron table。 运行 这个命令

sudo crontab -e

然后选择您喜欢的编辑器。

然后添加以下行:

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

最后在您的 Kernel.php 中添加时间表:

$schedule->command(<artisan command>)->everyMinute();

documentation 非常详细。

正在寻找 cron 作业:

根据您的 linux 系统设置方式,您可以查看:

 - /var/spool/cron/* (user crontabs)

 - /etc/crontab (system-wide crontab)

此外,许多发行版都有:

 - /etc/cron.d/* These configurations have the same syntax as /etc/crontab

 - /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly

这些只是包含可执行文件的目录,根据目录名称每小时、每天、每周或每月执行一次。

除此之外,您还可以找到 at jobs(检查 /var/spool/at/*)、anacron(/etc/anacrontab/var/spool/anacron/*)以及可能我忘记的其他内容。

参考资料:https://unix.stackexchange.com/questions/7053/how-can-get-a-list-of-all-scheduled-cron-jobs-on-my-machine