新手提问:如何使用cron与mutt调度基础邮件?及协同故障排查
解决Cron与Mutt协同工作的问题
嘿,这问题我太熟了!核心原因很简单:Cron的运行环境和你平时用的终端环境不一样,它的默认PATH环境变量窄得多,导致找不到mutt的可执行文件。你收到的/bin/sh: mutt: command not found报错已经直接点明了这点——终端能找到mutt,但cron找不到。
下面给你两个靠谱的解决办法,选一个就行:
办法一:用mutt的绝对路径执行命令
- 先在终端里运行这个命令,找到mutt的完整路径:
你会得到类似which mutt/usr/local/bin/mutt或者/usr/bin/mutt的输出,这就是mutt的绝对路径。 - 把crontab里的命令改成用这个绝对路径调用mutt,比如:
* * * * * echo "message body" | /usr/local/bin/mutt -s "Test Email" email@email.com >/dev/null 2>&1
办法二:给Cron配置完整的PATH环境变量
- 先在终端里查看你当前的PATH:
输出会是一串用冒号分隔的路径,比如echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin。 - 打开你的crontab编辑界面(
crontab -e),在最顶部添加一行PATH配置,把刚才得到的路径填进去:
这样cron运行时就会用和终端一样的PATH,自然能找到mutt了。PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
改完之后保存crontab,等一分钟左右看看能不能收到测试邮件。如果还是有问题,可以检查下Cron Daemon发来的邮件,看看有没有新的报错信息。
内容的提问来源于stack exchange,提问作者user2989759
相关产品推荐
相关产品推荐

