crontab定时任务不执行总结

2021-11-20 From 程序之心 By 丁仪

原因1:crond 服务未启动

首先确认服务器是否开启任务计划服务,只有root用户才能对crond服务进行开启和关闭。如果停止了就无法执行任何定时任务了,解决的方法是启动服务:service crond start。


原因2:权限问题

比如:脚本没有x执行权限,解决方法:增加执行权限,或者用bash abc.sh的方法执行。也有可能crontab任务所属的用户对某个目录没有写权限,也会失败。


原因3:路径问题

有的命令在shell中执行正常,但是在crontab执行却总是失败。有可能是因为crontab使用的sh未正确识别路径,比如:以root身份登录shell后执行一个/root/test.sh,只要执行 ./test.sh 就可以了。但是在crontab中,就会找不到这个脚本,比如写完整:/root/test.sh


p> <p> 原因4:时间问题 p> <p> 因为服务器与客户端时差问题,所以 crontab 的时间服务时间为准。时差这个问题还真是搞人,这个我亲身体验了,现象如下: p> <p> (1) 我设置了一个定时脚本,用date命令观察服务器的时间到了脚本执行时间点,发现没有执行 p> <p> (2) 但是我把脚本设置成每分钟执行一次,就是OK的 p> <p> 见鬼了,服务时间是对的啊?莫非是要加个什么时区?于是把脚本时间减10或者12或者8个小时都尝试了下,发现都不行。但是很明显是时间不一致导致的不执行p>

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
service crond restart
<p> 原因5:变量问题 p> <p> 有时候命令中含有变量,但crontab执行时却没有,也会造成执行失败。 p>

本文来源:程序之心,转载请注明出处!

本文地址:https://chengxuzhixin.com/blog/article/303326.html

发表感想

© 2016 - 2022 chengxuzhixin.com All Rights Reserved.

浙ICP备2021034854号-1    浙公网安备 33011002016107号