最近尝试linux上执行定时任务,本来以为设置定时任务很简单,然而,真正执行的时候处处打脸,一直找不到为什么不执行。关于设置定时任务我的另一篇博客里总结的有,这里不做赘述,下面就讲一讲关于解决不执行的几点思路。(因为每个人的情况可能不一样,这里就只讲理论方法)
第一点:
定时任务功能未启动,这种出现的可能性比较低,解决方法就是命令行启动,然后看一下状态,不多讲(命令行百度到处都能找到)
第二点:
权限问题,刚开始我以为root用户对所有文件都有权限,就没有考虑这方面的问题,实际上我错了,root只是用户权限,文件的执行权限还是需要设置一下的,具体可以看chmod的用法。
第三点:
路径问题,也可以说是环境问题,举个例子,如果我们用定时任务来执行pyhton文件,就需要把python的环境写上,也需要把文件的路径写上,还有一种可能如下:
有的命令在shell中执行正常,但是在crontab执行却总是失败。有可能是因为crontab使用的sh未正确识别路径,比如:以root身份登录shell后执行一个/root/test.sh,只要执行
1 |
|
就可以了。但是在crontab中,就会找不到这个脚本,比如写完整:
1 |
|
第四点:
时差问题,这个只是个别案例,就是服务器的时间设置与客户端的时间不一致,也会误认为不执行,时间上可能是因为服务器上的时间还没到定时任务执行的时间。
如果还有其他的原因,可以留言讨论!