crontab守护程序发送虚假的电子邮件

时间:2013-07-15 13:18:19

标签: linux cron crontab

我的crontab包含以下条目

*/2 * * * * /usr/local/bin/some_command &> /dev/null

换句话说,每隔两分钟运行some_command并丢弃输出,以便cron不会向我发送输出的电子邮件。

但是,每天大约一到两次,我会收到一封包含/ usr / local / bin / some_command输出的电子邮件 - 好像&> / dev / null已经离开了crontab条目。

from: Cron Daemon <root@hostanme.edu>
to: jsp@hostname.edu
subject:  Cron <jsp@psy58> /usr/local/bin/some_command &> /dev/null
...
[some_command output]

可能导致这种情况的原因是什么?

同样,crond每天都会调用几百次这个命令,但只有一两个实例就会通过电子邮件向我发送输出信息。

调用的实际命令是:

/usr/local/bin/proctempalert -i='sensors -f | mail -s "`hostname` is HOT" myemail@gmail.com' &> /dev/null

而且我知道它运行正常,(当我的cpu运行正常时,我会收到一封电子邮件)。

1 个答案:

答案 0 :(得分:2)

您进行此设置的方式(在命令末尾使用'&amp;&gt; / dev / null')将命令的stdout发送到/ dev / null,这样可以防止crond通过电子邮件将命令输出发送给您。但是,它不会影响命令输出到stderr。我怀疑每隔一段时间,你的命令就会向stderr发送一些消息,这就是你收到的虚假电子邮件中的内容。要将stdout输出和stderr输出发送到/ dev / null,请在命令末尾添加以下内容:

  

/ dev / null 2&gt;&amp; 1

所以,整个事情看起来像这样:     / usr / local / bin / proctempalert -i ='sensors -f | mail -s“hostname很热”myemail@gmail.com'&gt; / dev / null 2&gt;&amp; 1