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

标签 linux cron

我的 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/

相关文章:

linux - 两次调用 main 的行为不同

php - 如何知道主机名是计算机 "Server"还是个人 "Desktop"

linux - cron 作业在什么进程下运行?

linux - 我怎样才能用 Perl 杀死整个进程树?

linux - 自动完成在 Eclipse 中根本不起作用

c++ - 大型二维数组给出段错误

php - 为什么 cron 执行 php 脚本有点不同?

macos - 如何导出包含 *(星号)符号的变量?

node.js - 我可以在 Node 中同时拥有多少个计划作业

perl - 如何从 cron 运行的 Perl 脚本中运行 shell 脚本?