【问题标题】:Linux sendmail command not sending mail while in a cronLinux sendmail命令在cron中不发送邮件
【发布时间】:2019-06-29 19:33:39
【问题描述】:

我正在尝试在 Red-hat Linux 环境中通过 cronjob 在 bash shell 脚本上运行 sendmail 命令。当手动运行此脚本时,我可以成功运行此脚本,并且除了邮件部分之外,shell 中的所有其他作业都可以正确运行。我从未使用过 sendmail 并且不确定是否需要重新构建它的呈现方式。

我试过mail和mailx。我可以发送电子邮件,但日志文件包含许多奇怪的字符,它将文本格式放入我不想要的电子邮件的 att00001.bin 附件中。 sendmail 命令似乎是唯一一个在手动运行时不发送附件的命令。其他 cron 作业正常工作,并且能够发送电子邮件,只是日志文件中没有特殊字符。

echo '##################################################'
date
echo '##################################################'

#Run Script and write to log file
/comp/gfb281m.sh > /usr/local/bin/oracle/getload/getload.log 2>&1

#Send log file to developer group
(echo "Subject:GetLoad Shell"; echo; cat 
/usr/local/bin/oracle/getload/getload.log) | sendmail -v 
exampleEmail@outlook.com exampleEmail2@mail.mil

当运行这个 cron 作业时,应该将 getload.log 文件的内容发送给 a 组用户。

【问题讨论】:

  • 在 RedHat 上 cron 登录的任何位置的任何消息?
  • 愚蠢的我,我只是告诉 cron 在运行时给自己写一个日志文件,发现它不知道在哪里可以找到 sendmail 命令。感谢您对日志的提示,遗憾的是我应该知道这一点。

标签: linux scripting cron sendmail


【解决方案1】:

感谢其他来源解决了这个问题。我没有使用 sendmail 的完整路径。我只是说“| sendmail -v email”,而不是 sendmails 的完整路径,对我来说是“/usr/sbin/sendmail”。不确定此处是否允许链接,但下面是我找到答案的地方。

https://www.unix.com/red-hat/271632-bash-sendmail-command-not-found.html

【讨论】:

    【解决方案2】:

    crontab 将PATH 设置为/usr/bin:/bin。为避免输入像 /etc/sbin/sendmail 这样的绝对命令名称,您可以在 crontab 中设置 PATH:

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    */30 * * * * sendmail user@example.com%subject: Sample email%%Email body%
    

    【讨论】:

      猜你喜欢
      • 2019-12-16
      • 2016-09-24
      • 2015-11-27
      • 2017-06-26
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 2013-05-28
      • 2010-11-22
      相关资源
      最近更新 更多