我们有一个 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
在那里它会告诉你错误消息