CentOS 7备份脚本手动正常但Cron执行报错:sendmail未找到
解决Cron执行备份脚本时找不到sendmail的问题
问题原因
Cron的默认环境变量PATH比手动登录时窄很多,通常只有/usr/bin:/bin,而sendmail一般安装在/usr/sbin目录下,不在Cron的默认PATH范围内,所以脚本执行时找不到该命令。而手动登录时系统会加载完整的PATH配置,包含/usr/sbin,因此能正常调用sendmail。
解决方法
直接使用sendmail的绝对路径:
先手动执行which sendmail获取sendmail的绝对路径(比如输出/usr/sbin/sendmail),然后把脚本第9行里的sendmail替换成这个绝对路径。在脚本开头设置完整的PATH:
在mybackup.sh的最开头添加一行,把常用命令目录加入PATH:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin在Cron任务中指定PATH:
修改Cron配置,在任务前加上PATH设置:30 20 * * * PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin /root/bin/mybackup.sh
以上三种方法任选其一即可,推荐第一种用绝对路径的方式,最稳妥。
内容的提问来源于stack exchange,提问作者Sjors
相关产品推荐
相关产品推荐

