Sendmail 不适用于 crontab (bash)

Posted

技术标签:

【中文标题】Sendmail 不适用于 crontab (bash)【英文标题】:Sendmail is not working with crontab (bash) 【发布时间】:2014-07-07 08:46:57 【问题描述】:

我创建了一个磁盘清理脚本,清理后会发送一封状态电子邮件。现在,当我通过命令行运行它时,它可以完美执行,但是通过 cronjob 它无法发送状态邮件,尽管脚本运行正常。我在谷歌阅读了很多解决方案,但没有什么对我有用。我在我的 Ubuntu 机器上使用 Bash。这是我脚本的 sendmail 部分。

export CONTENT="/root/cleanup/cleanup.htm"                                           
export SUBJECT="Disk Space Clean Up Process : Completed @ $date_time"

(echo "Subject: $SUBJECT"
echo "`cat sendmail_list.txt`"
echo "MIME-Version: 1.0"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"
cat $CONTENT
)|/usr/sbin/sendmail -t 

请帮助我知道解决方案...谢谢

【问题讨论】:

cat sendmail_list.txt时使用完整路径。 可能值得检查 /var/log/syslog 是否有任何不妥之处。您可以通过运行 less /var/log/syslog | grep CRON 过滤掉 cron 消息 你的步骤已经奏效了 Fedorqui....非常感谢... 【参考方案1】:

请在 sh 文件中 sendmail 前添加/usr/sbin

/usr/sbin/sendmail "user@domain.com" < file.txt 

希望对https://***.com/editing-help有帮助

【讨论】:

【参考方案2】:

邮件标题和正文之间需要一个空行。


    echo "Subject: $SUBJECT"
    echo "$(< sendmail_list.txt)"
    echo "MIME-Version: 1.0"
    echo "Content-Type: text/html"
    echo "Content-Disposition: inline"
    echo ""
    cat $CONTENT
 | /usr/sbin/sendmail -t 

其他几件事:

这里不需要子shell,所以我把周围的括号改成了大括号 因为这是 bash,所以有 $(cat file) 的简写——$(&lt; file)

【讨论】:

感谢您的回复。我使用了您所说的空白行。但它仍然无法发送邮件。通过 cronjob 运行作业时似乎存在一些环境设置问题......但无法识别解决方案。 你对 fedorqui 的评论做了什么吗? 哦..我刚刚注意到Farmer的评论,不知道我是多么想念fedoqui的......我真是个傻瓜......它现在正在工作......谢谢大家......真的很感激...... .【参考方案3】:

cron 作业和 CLI 执行之间的环境变量可能不同。

您可以检查 cron 和命令行执行的“env”命令输出之间的差异。

【讨论】:

这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review 感谢@eadana 的贡献!围绕您的答案提供更多细节/清晰度可能会有所帮助。 env > /tmp/env.manual.output.txt(手动运行) env > /tmp/env.cron.output.txt(在 cron 的脚本中运行)然后检查两者之间的差异输出文件。

以上是关于Sendmail 不适用于 crontab (bash)的主要内容,如果未能解决你的问题,请参考以下文章

为啥“重启”操作不适用于 crontab?

Crontab NTP Sendmail

UIScrollView 不适用于 EXC_BAD_ACCESS

Unix下使用crontab注意事项

关于crontab定时任务报错问题

将 sendmail 用于 HTML 正文和二进制附件