Linux crontab守护进程发送虚假电子邮件
我的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>
*/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