我的 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 运行过热时我会收到一封电子邮件)。
最佳答案
您进行此设置的方式(在您的命令末尾使用'&>/dev/null')是将命令的标准输出发送到/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
关于linux - crontab 守护进程发送虚假电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17655193/