记一次Laravel 定时任务schedul:run未执行的处理

关于Laravel的任务调度(定时任务)的配置在此不做赘述,跟着官方文档一步一步的操作是不会导致定时任务不能正常工作的。
为保证能及时捕获定时任务执行出现异常的原因,只需在配置系统crontab时指定日志文件即可。在执行中出现的任何问题都将会记录在你指定(任意区域,需注意权限)的日志当中。这对于寻找问题原因来说,是极为方便的。

* * * * * cd /path-to-your-project && php artisan schedule:run >> 你的日志文件位置.log 2>&1

以上定时任务确是每分钟执行一次,因此无论成功失败,你都会在你指定的日志中看见最新的输出信息。可使用以下指令查看日志中的输出:

tail -f 你的日志文件位置

以上,就能帮助你很快的捕捉到为何你的Laravel定时任务未执行的原因。除此之外,有一个建议是:在将你的定时任务部署到机器上之前,你应该先通过:

php artisan schedual:run

命令来运行一下你的任务,这样可以在开发阶段就能将大部分的问题都处理掉。当然前提是,调用的任务是每分钟执行的,否则的话,该命令只有在符合你所定义的时间间隔时才会去执行你的任务。
最后,提及一个我自己遇到的问题。若你使用root账户创建了定时任务,则无需在定时任务脚本中加入root账户名称。如下:

* * * * * root cd /path-to-your-project && php artisan schedule:run >> 你的日志文件位置.log 2>&1

在我的ubuntu机器上,这样做直接会报错:

/bin/sh:root:command not found

接原因是使用root账户创建crontab定时任务后,该定时任务文件就保存在了/var/spool/cron/root中,因此无需再指定root账户。
文中难免有疏漏,若存在,烦请责正!
PS:以上文中所有指令均为手打,在此不对指令拼写的正确性与各平台的适用性做任何保证。若出现相关问题,烦请自行bing。

原文地址:https://www.cnblogs.com/hilsion/p/11974188.html

时间: 2024-11-14 18:48:02

记一次Laravel 定时任务schedul:run未执行的处理的相关文章

记一次Laravel定时任务导致日志没有写入权限的坑

问题:用laravel开发定时任务时,发生了日志没有写入权限导致项目打不开的问题 原因:linux的添加定时任务时默认是当前登录用户,我定时任务会生成日志 crontab: kernel: 生成日志的文件所有者是当前用户yang,其他用户没有写入权限 而php的执行用户是apche 经过一番研究,这里给crontab 指定的用户与php执行的用户一致: crontab -u apache -e 写入定时执行的任务并删除之前的定时任务 亲测解决 原文地址:https://www.cnblogs.c

记一次ElasticSearch重启之后shard未分配问题的解决

记一次ElasticSearch重启之后shard未分配问题的解决 环境 ElasticSearch6.3.2,三节点集群 Ubuntu16.04 一个名为user的索引,索引配置为:3 primary shard,每个primary shard 2个replica 正常情况下,各个分片的分布如下: 可见,user 索引的三个分片平均分布在各台机器上,可以完全容忍一台机器宕机,而不丢失任何数据. 由于一次故障(修改了一个分词插件,但是这个插件未能正确加载),导致 node-151 节点宕机了.修

如何让linux定时任务crontab按秒执行

如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟 如果想以秒为单位执行,应该如何设置呢? 思路 正常情况是在crontab中直接定义要执行的任务,现在我们在中间添加一个脚本文件 自定义一个脚本文件,循环执行要执行的任务,循环中使用sleep来控制间隔秒数 在crontab中添加一个任务,设置为每分钟都执行这个脚本 就是用crontab控制分钟,用脚本内的循环来控制秒 示例 (1) 定义目标任务 用php写了一个测试任务,向文件中写一个时间信

java定时任务,每天定时执行任务

java定时任务,每天定时执行任务. public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日2:00执行方法 ***/ calendar.set(Calendar.HOUR_OF_DAY, 2); calend

jQuery清除、停止队列中剩下(未执行的函数)

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>jQuery清除.停止队列中剩下(未执行的函数)</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> </script> <scrip

重置已分配未执行的任务(300,400-》200)

初始动作:重置所有已分配未执行的任务 1.删除/ZkTest/tasks/* 2.修改所有已分配未执行的任务记录 节点挂掉:监控父节点(/ZkTest/nodes)会感知,系统删除节点,回调通知程序 1.遍历修改子节点下的所有已分配未执行的任务记录 /ZkTest/tasks/${NodeKey}/TaskInst*** 2.修改对应的数据库记录 节点重连:节点重连回调会捕捉后修改zkNodekey(old->new) 1.遍历处理老zkNodeKey下的所有已分配未执行的任务记录 /ZkTes

Linux下安装Oracle网络配置检查未执行

问题描述 如图: 完整描述: Checking Network Configuration requirements ... Actual Result: Unknown Host Exception has Occurred :Linux-PC: Linux-PC. Check complete. The overall result of this check is: Not executed <<<< Recommendation: Oracle supports insta

一个多线程问题引发的血案-(代码段执行完毕,子进程未执行完毕导致段错误)

今天遇到一个问题,gdb执行程序完全没有问题,但直接执行就会段错误,百思不得其解,各种纠结,各种搜索引擎都试了一遍,无果!后来问题还是被我自己挖出来了. 看下边一段代码: int TaskSendControl() { pthread_t prov_thread[CLIENT_NUM]; int prov[CLIENT_NUM]; for(int i=0; i< CLIENT_NUM; i++) { prov[i] = i; if( pthread_create(&prov_thread[i

Erlang的gen_server的terminate()/2未执行

官方资料参考: Module:terminate(Reason, State) Types: Reason = normal | shutdown | {shutdown,term()} | term() State = term() This function is called by a gen_server when it is about to terminate. It should be the opposite of Module:init/1 and do any necessa