通过 cron 发送邮件不起作用

通过 cron 发送邮件不起作用

我们有一个 rsync 脚本,用于从服务器 1 到服务器 2 进行备份。该服务器是 Centos 类型的 Amazon Linux AMI。该脚本每天通过 crontab 执行。备份已完成,因此 cron 运行且脚本正常工作。创建日志并应通过邮件发送给我们。由于某种原因,这种情况不会发生。如果我手动运行脚本,则会发送邮件,因此邮件服务器(Postfix)可以工作,并且 rsync 脚本末尾的邮件脚本也可以工作。下面您可以看到 rsync 脚本:

回声“至:[电子邮件受保护]> /tmp/rsync_test.log
回声“来自:[电子邮件受保护]>> /tmp/rsync_test.log
echo "主题:Testmail >> /tmp/rsync_test.log
echo "" >> /tmp/rsync_test.log
猫 /tmp/rsync_test.log |发送邮件-t

为什么这不起作用以及如何修复它?

答案1

Cron 任务在有限的环境中运行特别是,PATH 环境变量可能不包含 cat 或 sendmail 的路径

尝试指定完整路径:

/bin/cat /tmp/rsync_test.log | /usr/sbin/sendmail -t

这是我的猜测。

如果您想知道确切的原因,请在设置 cronatsk 时将 crontask 脚本的 stdout 和 stderr 捕获到日志文件中

*/5 * * * * /your/scripts/task.sh >/somepath/file.log 2>&1

在那里它会告诉你错误消息

相关内容