问题现象
新换了个VPS装了个程序,需要用到系统定时任务,可装完发现程序功能异常。一开始怀疑程序的问题,毕竟自己凭着三脚猫功夫改过些代码。
折腾完发现程序代码没问题,原来是定时任务没执行。但查看系统任务在正常地跑着,任务配置格式也没问题,手动执行是正常的。搜了下issues,该问题有不少人遇到,但都没有明确给出问题的根本原因。
问题原因
不喜欢兜圈子,直接说原因:www
用户一般在安装LNMP或者宝塔面板时会自动创建,且是个无登录权限无 HOME
的用户,如果系统定时任务归属于此用户,估计系统任务执行时需要到对应用户目录下执行,此时 crond
执行时会出现切换目录失败,导致表面上没错,但定时任务未执行。
1 |
错误日志
1 |
开着这个,会监控到 crond
服务执行日志,有错误也能看到,照错误提示去解决就行了。
正常执行情况下是这样子的:
1 |
问题排查方法
检查任务设置
确认自己的定时任务设置没问题,包括语法结构和用户权限等,命令可以手动执行测试下,任务设置方法可见:
倒推检查
-
检查任务执行后的结果是否符合预期
-
确保定时任务服务启动状态:
service crond status
-
用
tail -f /var/log/cron
查看系统定时任务执行情况 -
根据日志解决对应错误问题
-
系统任务无错的情况检查自己的任务执行命令,手动执行看结果