【问题标题】:how to Stop this Bash script from sending email to the Admin?如何阻止此 Bash 脚本向管理员发送电子邮件?
【发布时间】:2015-08-02 08:48:02
【问题描述】:

我在这样的 cron 作业设置中有这个脚本:

*/10 * * * * /bin/sh /home/scripts/restart_apache

这是脚本本身:

#!/bin/bash

cl=`awk '{print $1}' /proc/loadavg `
cll=`printf %.0f $cl`

echo $cll
if [ $cll -gt 100 ]
then
        /etc/init.d/apache restart
fi

此脚本每 10 分钟发送一封电子邮件,问题是: 如何禁用电子邮件通知但保留脚本功能?

感谢您的回答。

【问题讨论】:

    标签: bash email


    【解决方案1】:

    电子邮件不是来自脚本。 cron 发送带有任何输出的电子邮件,因此显而易见的解决方案应该是摆脱输出。

    */10 * * * * /bin/sh /home/scripts/restart_apache >/dev/null 2>&1
    

    【讨论】:

    • 您好,我注意到其他 cron 作业有 >/dev/null 2>&1,>/dev/null 2>&a 和 >/dev/null 2>&1 有什么区别?如果有的话。
    • @NicoBlog 我猜是打字错误,应该是>/dev/null 2>&1
    • @NicoBlog 是的,这只是一个错字
    【解决方案2】:

    实际上是 cron 守护进程发送消息,而不是那个脚本。

    您通常可以通过在 crontab 中添加一行来关闭 cron 的该功能:MAILTO=""。所以你的 crontab 会这样写:

    MAILTO=""
    */10 * * * * /bin/sh /home/scripts/restart_apache
    

    要了解这些事情,最好总是阅读一些有关您使用的实用程序的信息。通常,“linux 手册页”提供了大量准确的信息。所以试试man 5 crontab :-)

    【讨论】:

    • 谢谢,这是一个有效的选项,但它也会禁用所有其他 cron 作业的所有电子邮件,而不是我不想被通知的特定作业。还是很高兴知道。
    猜你喜欢
    • 1970-01-01
    • 2018-03-13
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多