【问题标题】:sendmail not working in crontabsendmail 在 crontab 中不起作用
【发布时间】:2018-12-21 04:48:00
【问题描述】:

当我尝试从 crontab 执行我的脚本时遇到问题,但是当我尝试手动执行时,它工作得非常好。

Crontab 文件

54 * * * * /opt/SP/home/osbadm/scripts/tmp1.sh 2>&1 

发送邮件功能

SUBJECT="test"
TO="to@gmail.com" (
echo "TO: $TO"
echo "MIME-Version: 1.0"
echo "Subject: $SUBJECT"
echo "Content-Type: text/html"
cat $EXTRACT_CST_HTML
) | /usr/sbin/sendmail -f from@gmail.com $TO

谁能帮帮我。

【问题讨论】:

  • 你遇到什么样的错误?
  • 脚本是否设置了执行位。它也应该以#!/bin/sh 开头
  • 看不到 Cron 日志,无权查看它们。收不到邮件。还有其他调试方式吗?
  • 是的。请参阅stackoverflow.com/tags/cron/info,了解有关如何调试失败的 cron 作业的许多提示,包括创建错误日志
  • 谢谢你!问题解决了,Barmar 的回答很有帮助

标签: shell unix cron sendmail


【解决方案1】:

您不能在启动子shell 的( 之前放置变量赋值。如果您将脚本粘贴到shellcheck.net,它会告诉您:

SC1036: '(' 在这里无效。你忘记转义了吗?

另外,即使你可以,它也只会在子进程的环境中设置变量,在处理sendmail 的参数时它是不可见的。所以把这个任务放在它自己的行上。此外,here-doc 是一种将多行输入传递给sendmail 的更简单方法。

TO="to@gmail.com"
(
echo "TO: $TO"
echo "MIME-Version: 1.0"
echo "Subject: $SUBJECT"
echo "Content-Type: text/html"
cat $EXTRACT_CST_HTML
) | /usr/sbin/sendmail -f from@gmail.com $TO

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 2011-12-19
    • 2013-11-12
    • 2017-10-03
    • 2011-07-23
    • 1970-01-01
    • 2015-01-23
    • 2017-04-14
    • 2020-04-21
    相关资源
    最近更新 更多