You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:52:02