记一次系统任务无法正常执行
条评论问题现象
新换了个VPS装了个程序,需要用到系统定时任务,可装完发现程序功能异常。一开始怀疑程序的问题,毕竟自己凭着三脚猫功夫改过些代码。
折腾完发现程序代码没问题,原来是定时任务没执行。但查看系统任务在正常地跑着,任务配置格式也没问题,手动执行是正常的。搜了下issues,该问题有不少人遇到,但都没有明确给出问题的根本原因。
问题原因
不喜欢兜圈子,直接说原因:
www
用户一般在安装LNMP或者宝塔面板时会自动创建,且是个无登录权限无 HOME
的用户,如果系统定时任务归属于此用户,估计系统任务执行时需要到对应用户目录下执行,此时 crond
执行时会出现切换目录失败,导致表面上没错,但定时任务未执行。
1 | (CRON) ERROR chdir failed (/home/www): No such file or directory |
错误日志
1 | tail -f /var/log/cron |
开着这个,会监控到 crond
服务执行日志,有错误也能看到,照错误提示去解决就行了。
正常执行情况下是这样子的:
1 | Mar 15 20:14:01 xxx CROND[23817]: (www) CMD (php /yyy/artisan schedule:run >> /dev/null 2>&1) |
问题排查方法
检查任务设置
确认自己的定时任务设置没问题,包括语法结构和用户权限等,命令可以手动执行测试下,任务设置方法可见:
倒推检查
- 检查任务执行后的结果是否符合预期
- 确保定时任务服务启动状态:
service crond status
- 用
tail -f /var/log/cron
查看系统定时任务执行情况 - 根据日志解决对应错误问题
- 系统任务无错的情况检查自己的任务执行命令,手动执行看结果
本文标题:记一次系统任务无法正常执行
文章作者:凹凸曼
发布时间:2018-03-15
最后更新:2018-03-15
原始链接:https://sobaigu.com/linux-schedule-donot-run-with-crond.html
版权声明:转载请务必保留本文链接和注明内容来源,并自负版权等法律责任。