如何停止每月 cron 输出电子邮件

如何停止每月 cron 输出电子邮件

服务器是Debian 6.0。在 /etc/aliases 中我有;

root: [email protected]

这样根电子邮件就会直接发送给我。今天,我放入 /etc/cron.monthly 的每月脚本已通过电子邮件将其输出发送给我。这是一个相当简单的脚本,如下所示;

#!/bin/bash
cd /a/directory
rm -rf ./*
wget http://www.site.com/fresh-copy.zip
unzip fresh-copy.zip
rm fresh-copy.zip

我收到的电子邮件如下;

**Subject**: Cron <root@myserver> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
**From**: [email protected]
**Body**:

    /etc/cron.monthly/speedtest:
--2013-03-01 06:52:01--  http://www.site.com/fresh-copy.zip
Resolving www.site.com... 11.22.33.44
Connecting to www.site.com|11.22.33.44|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 99763924 (95M) [application/zip]
Saving to: `fresh-copy.zip'

     0K .......... .......... .......... .......... ..........  0% 11.7M 8s
    50K .......... .......... .......... .......... ..........  0% 11.3M 8s
   100K .......... .......... .......... .......... ..........  0% 11.4M 8s
        *CUT OUT FOR BREVITY*
 97350K .......... .......... .......... .......... .......... 99% 16.9M 0s
 97400K .......... .......... .....                           100% 11.6M=9.7s

2013-03-01 06:52:11 (9.78 MB/s) - `fresh-copy.zip' saved [99763924/99763924]

Archive:  fresh-copy.zip
  inflating: file1.ext
  inflating: file2.ext
  inflating: file3.ext
  inflating: file4.ext
  inflating: file5.ext

此电子邮件中的唯一输出来自wgetandunzip命令。我可以编辑脚本并将其放在> /dev/null这两行的末尾,但这真的是最好的方法吗?如果我向生成输出的脚本添加更多命令,我将始终需要添加> /dev/null到每一行。有没有办法可以禁用此 cron 脚本输出的电子邮件通知?

答案1

我建议您继续> /dev/null在脚本中使用(或使用和-q的选项)。这样,如果其中一个命令抛出错误,这些错误仍然会通过电子邮件发送给您,但正常输出将被抑制。wgetunzip

答案2

一种更简单的方法是将脚本添加到老式的 crontab 中,而不是将脚本添加到 cron.monthly 目录中,您可以在 crontab 行上指定希望输出转到 /dev/null。像这样:

crontab -e

编辑 crontab。然后添加以下行:

@monthly /path/to/script > /dev/null

这意味着 STDOUT 被重定向到 /dev/null,但 STDERR 仍然会出现在电子邮件中。如果您也不想收到错误邮件,则该行应如下所示:

@monthly /path/to/script > /dev/null 2>&1

答案3

我一直在使用cronic有一段时间,它从来没有让我失望过。

本质上,它是 cron 的包装脚本,只有在出现错误返回代码或 stderr 中存在某些内容时,它才会向您发送电子邮件。这样,您就不会在每次 cron 运行时收到垃圾邮件,但在出现问题时仍然会收到通知。

要使用它,请下载 cronic 脚本并更改 cron 命令(例如)

* * * * * awesome_command

* * * * * /path/to/cronic awesome_command

答案4

如果您只想“静音”此脚本,您可以将/dev/null 2>&1其放在 crontab 文件中调用文件的行末尾。使用这种方法,您不能将脚本放在每月文件夹中,您需要使用以下命令编辑 crontab 文件:

contab -e

或者您可以编辑 cron 配置并从中删除您的邮件。每件事都有解释这里

相关内容