Laravel 定时任务 crontab 一直不执行

设置的定时任务是 $schedule->command('ordercheck')->hourly();
然后放到 crontab 里一直都没有执行。0 * * * * php /data/xx/artisan schedule:run >> /dev/null 2>&1
每小时的第一分钟内手动执行 php /data/xx/artisan schedule:run 是没问题的,能出 log 日志,但是 crontab 就没反应了,用 * * * * * 也还是没反应。
看了 crontab 日志在每小时的第一分钟的时候也执行了,但是 laravel 那边就是不执行不打印日志。这个是 cron 的日志记录:
Jun 10 18:00:01 localhost CROND[7514]: (root) CMD (php /data/wwwroot/xx/artisan schedule:run >> /dev/null 2>&1)

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
hareluya
最佳答案

crontab 用户权限问题,看看是不是和 nginx 是一个用户下的 crontab

4年前 评论
lovnie (楼主) 4年前
哓东 4年前
讨论数量: 7

->hourly () 是每个小时第 0 分钟执行,比如 13:00、14:00...

4年前 评论
lovnie (楼主) 4年前
No_Panic 4年前
lovnie (楼主) 4年前

可以看看 这个目录下的文件 storage/framework/schedule-*,如果有就删掉

4年前 评论
lovnie (楼主) 4年前

* * * * * php /data/xx/artisan schedule:run >> /dev/null 2>&1 的意思是每分钟到项目中检查有没有要执行的任务,只需要将这行命令放在 crontab 中即可。出现上边错误,应该是代码问题。

4年前 评论
lovnie (楼主) 4年前
lovnie (楼主) 4年前

No scheduled commands are ready to run

这个的意思是当前没有需要执行的定时任务,这个不属于错误吧,你把执行时间改为每分钟执行,这样好测试,然后在执行代码开始的时候就写 log。

检查下面 Kernel 的配置:

file

file

检查 commands 的配置

file

如果你这些都没问题,OK 我束手无策 :joy:

4年前 评论
lovnie (楼主) 4年前
哓东 (作者) 4年前
hareluya

crontab 用户权限问题,看看是不是和 nginx 是一个用户下的 crontab

4年前 评论
lovnie (楼主) 4年前
哓东 4年前

1. 手动执行下,在项目根目录执行 php artisan ordercheck 看看能否执行成功

2. 在 cli 模式下打印下 php 的 UID,检查下对应 UID 用户的 crontab 里是否有任务

3. 检查项目目录对对应 crontab 的用户和 cli 模式下的 php 的权限问题

4. 查看 /var/log/system.log 或 cron.log,看是否有记录,如果有贴上来

4年前 评论
自由与温暖是遥不可及的梦想
  * * * * * * /usr/local/php/bin/php /data/wwwroot/***.***.***/artisan schedule:run >> /dev/null 2>&1   
4年前 评论