2018年12月18日 15:00:29 fengyuanye 阅读数 1260更多
    分类专栏: 互联网

    1. [
    2. shell ](https://blog.csdn.net/fengyuanye/article/category/8086351)
    3. [
    4. ](http://creativecommons.org/licenses/by-sa/4.0/)
    5. 版权声明:本文为博主原创文章,遵循[ CC 4.0 BY-SA ](http://creativecommons.org/licenses/by-sa/4.0/)版权协议,转载请附上原文出处链接和本声明。
    6. <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
    内容格式
    crontab定时任务执行失败原因 - 图1
    检查有无中文
    2. 文件没有执行权限
    若没有添加执行权限 chmod u+x jiaoben.sh
    然后,手动执行脚本,确认可以执行

    3. 环境变量没导入
    crontab 中环境变量:vi /etc/crontab
    crontab定时任务执行失败原因 - 图2
    shell脚本中的变量:
    脚本中可加入: source ~/.bashrc
    4. 其他错误,如拼写错误:如#!/bin/bash写成#/bin/bash
    5. 路径没写全:
    crontab -e 后内容最好是绝对路径(全);
    执行脚本内的路径没写全;
    如在/home/work/test目录下的test.sh文件:
    crontab定时任务执行失败原因 - 图3
    crontab内容:
    crontab定时任务执行失败原因 - 图4
    会发现定时任务在/tmp/ret.log中定时重定向成功;
    单再当前目录下的cront_test.txt却没有内容;
    这样主要是因为路径的原因:默认执行work的定时任务则在work目录下执行该脚本,如果是添加root用户执行该crontab任务,则重定向到/root下的cront_test.txt。
    这样果然发现,对应更新的定时任务重定向文件:
    crontab定时任务执行失败原因 - 图5
    所以,路径问题主要是两个方面:
    一个是crontab中的路径,最好写绝对路径,或者前面添加cd命令来执行;
    另一个是脚本或命令中的文件,最好也写绝对路径。
    综上,查找原因,主要从crontab的启动与否,命令格式正确与否,脚本是否有执行权限,命令中或脚本的路径问题;以及低级错误拼写问题等方面来查找。