我的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运行正常时,我会收到一封电子邮件)。
答案 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