crontab定时任务执行失败原因

转载:

crontab任务添加后,执行失败原因:

首先,可看/var/log/cron日志文件里面的记录,查看执行记录,查找失败原因

  1. 定时任务有没有启动:

当然,得先确保安装有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

内容格式


image.png

检查有无中文

  1. 文件没有执行权限

    若没有添加执行权限 chmod u+x jiaoben.sh

    然后,手动执行脚本,确认可以执行

  1. 环境变量没导入

       crontab 中环境变量:vi /etc/crontab
    
image

shell脚本中的变量:

       脚本中可加入: source  ~/.bashrc
  1. 其他错误,如拼写错误:如#!/bin/bash写成#/bin/bash

  2. 路径没写全:
    crontab -e 后内容最好是绝对路径(全);

执行脚本内的路径没写全;

如在/home/work/test目录下的test.sh文件:


image.png

crontab内容:

image.png

会发现定时任务在/tmp/ret.log中定时重定向成功;

单再当前目录下的cront_test.txt却没有内容;

这样主要是因为路径的原因:默认执行work的定时任务则在work目录下执行该脚本,如果是添加root用户执行该crontab任务,则重定向到/root下的cront_test.txt。

这样果然发现,对应更新的定时任务重定向文件:

image.png

所以,路径问题主要是两个方面:

一个是crontab中的路径,最好写绝对路径,或者前面添加cd命令来执行;

另一个是脚本或命令中的文件,最好也写绝对路径。

综上,查找原因,主要从crontab的启动与否,命令格式正确与否,脚本是否有执行权限,命令中或脚本的路径问题;以及低级错误拼写问题等方面来查找。
————————————————
版权声明:本文为CSDN博主「fengyuanye」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengyuanye/article/details/85065093

————————————————
版权声明:本文为CSDN博主「fengyuanye」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengyuanye/article/details/85065093

你可能感兴趣的:(crontab定时任务执行失败原因)