Linux crontab守护进程发送虚假电子邮件

Linux crontab守护进程发送虚假电子邮件,linux,cron,crontab,Linux,Cron,Crontab,我的crontab包含以下条目 */2 * * * * /usr/local/bin/some_command &> /dev/null 换句话说,每两分钟运行一些_命令并放弃输出,这样cron就不会向我发送输出的电子邮件 但是,每天大约有一两次,我会收到一封电子邮件,其中包含/usr/local/bin/some_命令的输出,就好像&>/dev/null已经从crontab条目中删除了一样 from: Cron Daemon <root@hostanme.edu>

我的crontab包含以下条目

*/2 * * * * /usr/local/bin/some_command &> /dev/null
换句话说,每两分钟运行一些_命令并放弃输出,这样cron就不会向我发送输出的电子邮件

但是,每天大约有一两次,我会收到一封电子邮件,其中包含/usr/local/bin/some_命令的输出,就好像&>/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]

我知道它运行正常(也就是说,当我的cpu运行热时,我会收到一封电子邮件)。

这种设置方式(命令末尾带有“&>/dev/null”)是将命令的stdout发送到/dev/null,防止crond通过电子邮件将命令的输出发送给您。但是,它不会影响从命令到stderr的输出。我怀疑,每隔一段时间,你的命令就会向stderr发送某种消息,这就是你收到的虚假电子邮件中所传递的信息。要将stdout输出和stderr输出发送到/dev/null,请在命令末尾添加以下内容:

/dev/null 2>&1

所以,整个事情看起来是这样的:
/usr/local/bin/proctempalert-i='sensors-f | mail-s“
hostname
is HOT”myemail@gmail.com“>/dev/null 2>&1

检查
man 5 crontab
手册,特别是其中解释了实际使用什么shell来运行命令的部分,然后意识到
/bin/sh
通常不会出错
&
(除非它是指向
bash
)的链接,@twalberg/usr/local/bin/proctempalert总是向stderr发送一些东西。如果/bin/sh不运行&>,那么我似乎每两分钟就会收到一次电子邮件。不过,这是一个很好的建议。我将把命令放在bash脚本中,看看这是否解决了问题。(你可能认为我会记得cron使用/bin/sh而不是bash,因为/usr/bin/at每次我调用它时都会恼火地警告我这个事实。)在
bash
中,
&>/dev/null
相当于
/dev/null 2>&1
。真正的问题可能是
cron
条目是用
/bin/sh
运行的,而不是
/bin/bash
,除非OP有一行
SHELL=…
行在问题中没有显示出来……这似乎已经解决了它。这是正确的ans是的,但是,正如@twalberg指出的,原因是错误的。
/usr/local/bin/proctempalert -i='sensors -f | mail -s "`hostname` is HOT" myemail@gmail.com' &> /dev/null