转载:
crontab任务添加后,执行失败原因:
首先,可看/var/log/cron日志文件里面的记录,查看执行记录,查找失败原因
- 定时任务有没有启动:
当然,得先确保安装有crontab,没有的话,先安装,有得话,确认是否启动
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //启动服务
- 添加格式有问题;
crontab -e
crontab -l
crontab -u root -e
crontab -u work -e
内容格式
检查有无中文
-
文件没有执行权限
若没有添加执行权限
chmod u+x jiaoben.sh
然后,手动执行脚本,确认可以执行
-
环境变量没导入
crontab 中环境变量:vi /etc/crontab
shell脚本中的变量:
脚本中可加入: source ~/.bashrc
其他错误,如拼写错误:如#!/bin/bash写成#/bin/bash
路径没写全:
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的启动与否,命令格式正确与否,脚本是否有执行权限,命令中或脚本的路径问题;以及低级错误拼写问题等方面来查找。
————————————————
版权声明:本文为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