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)

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
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年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!