Laravel + centos 8 任务调度执行失败处理记录

本文介绍了如何在Laravel中创建简单任务调度,并通过CentOS 8的crond服务进行定时执行。在遇到任务无法自动执行的问题后,通过检查php环境变量并修改crond命令,最终成功解决执行问题。此外,还提供了通过`tail -f /var/log/cron`跟踪crond日志的方法。
摘要由CSDN通过智能技术生成

创建任务调度

这里只介绍最简单任务调度创建。
找到App\Console下的Kernel.php文件里的schedule function
添加如下代码:

$schedule->call(function (){

	Log::info('执行任务...');
            
})->everyMinute();

这样简单的任务已经创建好了。

配置crond

进入centos 8 后,运行命令:

crontab -e

进入如下界面
你的centos 上可能不一样
然后i 进入编辑模式,添加自己的crond,比如:

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

这样,每分钟就会执行一次: php artisan schedule:run

未执行成功原因

但是通过查看项目下的日志文件:/storage/logs/laravel.log , 里面一直没有打印:
执行任务…
而手动执行:

cd /path-to-your-project && php artisan schedule:run

却可以在日志里看到打印信息,说明我们的任务调度没有问题,只是在crond 下执行出了问题,第一个考虑的是:会不会是php的环境变量问题?如果在执行时加上php的环境变量是不是可以解决?

解决办法

尝试第一个解决办法:在crond执行命令里指定php。
第一步:先查看php的目录:

whereis php

结果为:
在这里插入图片描述

第二步:修改crond ,通过如下命令:

crontab -e

然后修改上面的命令为:

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

然后重启crond

service crond restart

然后稍等一分钟,再去查看laravel的日志,就会看到已经有日志打印了。
** 还有一个方法跟踪一下crond的执行日志,使用命令:

tail -f /var/log/cron

完结…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟没翅膀

你的打赏是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值