今天遇到在命令行直接执行可以执行成功,加入crontab定时任务执行shell脚本却不成功失败的问题,踩坑了很长时间
记录下我的解决方法
原来我的定时任务填写方式:
[root@tao ~]# crontab -l
*/10 * * * * /bin/sh /search/index.sh >>/dev/null 2>&1
已经是使用绝对路径
2、tail -f /var/log/cron 查看corn执行日志,也是已经执行了,但是会有 shell命令的报错信息
3、已经正确执行了任务,则可能是否因为脚本的环境变量问题,所以在要执行的shell脚本中开头添加:
#!/bin/bash
source /etc/profile
4、若果还是不行,修改定时任务填写方式,手动切换到脚本路径之后再执行脚本
* * * * * cd /search/ && /bin/sh ./index.sh >>/dev/null 2>&1
最后总结 我的这个shell脚本有点特别在定时任务里 是需要 先切换到指定目录,然后再执行shell 才能成功!