2018年12月18日 15:00:29
fengyuanye
阅读数 1260更多
分类专栏:
互联网
[
shell ](https://blog.csdn.net/fengyuanye/article/category/8086351)
[
](http://creativecommons.org/licenses/by-sa/4.0/)
版权声明:本文为博主原创文章,遵循[ CC 4.0 BY-SA ](http://creativecommons.org/licenses/by-sa/4.0/)版权协议,转载请附上原文出处链接和本声明。
<br />本文链接:[https://blog.csdn.net/fengyuanye/article/details/85065093](https://blog.csdn.net/fengyuanye/article/details/85065093)
crontab任务添加后,执行失败原因:
首先,可看/var/log/cron日志文件里面的记录,查看执行记录,查找失败原因
0. 定时任务有没有启动:
当然,得先确保安装有crontab,没有的话,先安装,有得话,确认是否启动
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //启动服务
1. 添加格式有问题;
crontab -e
crontab -l
crontab -u root -e
crontab -u work -e
内容格式
检查有无中文
2. 文件没有执行权限
若没有添加执行权限 chmod u+x jiaoben.sh
然后,手动执行脚本,确认可以执行
3. 环境变量没导入
crontab 中环境变量:vi /etc/crontab
shell脚本中的变量:
脚本中可加入: source ~/.bashrc
4. 其他错误,如拼写错误:如#!/bin/bash写成#/bin/bash
5. 路径没写全:
crontab -e 后内容最好是绝对路径(全);
执行脚本内的路径没写全;
如在/home/work/test目录下的test.sh文件:
crontab内容:
会发现定时任务在/tmp/ret.log中定时重定向成功;
单再当前目录下的cront_test.txt却没有内容;
这样主要是因为路径的原因:默认执行work的定时任务则在work目录下执行该脚本,如果是添加root用户执行该crontab任务,则重定向到/root下的cront_test.txt。
这样果然发现,对应更新的定时任务重定向文件:
所以,路径问题主要是两个方面:
一个是crontab中的路径,最好写绝对路径,或者前面添加cd命令来执行;
另一个是脚本或命令中的文件,最好也写绝对路径。
综上,查找原因,主要从crontab的启动与否,命令格式正确与否,脚本是否有执行权限,命令中或脚本的路径问题;以及低级错误拼写问题等方面来查找。