毎月の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コマンドからのものです。スクリプトを編集してこの2行の末尾に置くこともできますが、> /dev/nullそれは本当に最善の方法ですか?出力を生成するスクリプトにさらにコマンドを追加した場合は、常に各行> /dev/nullに追加する必要があります。このcronスクリプトで電子メール通知の出力を無効にする方法はありますか?

答え1

> /dev/nullスクリプトで引き続き使用することをお勧めします(-qまたはオプションを使用)。これにより、いずれかのコマンドでエラーが発生した場合、そのエラーは電子メールで送信されますが、正常な出力は抑制されます。wgetunzip

答え2

より簡単なアプローチは、スクリプトを既存のcrontabに追加することです。 cron.monthly ディレクトリにスクリプトを追加する代わりに、出力が /dev/null に移動するように crontab 行に指定できます。このように:

crontab -e

クローンタブを編集します。次に、次の行を追加します。

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

これはSTDOUTが/ dev / nullにリダイレクトされますが、STDERRはまだ電子メールに表示されることを意味します。エラーメールも受信しないようにするには、行は次のようになります。

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

答え3

使ってきたcronicしばらく私を失望させたことはありません。

本質的に、これはエラーリターンコードがある場合、またはstderrに何かがある場合にのみ電子メールを送信するcronの周りのラッパースクリプトです。これにより、cronが実行されるたびにスパムメールを受信しなくなりますが、問題が発生した場合は通知を受け取ります。

これを使用するには、cronicスクリプトをダウンロードしてcronコマンドを変更します(例:)

* * * * * awesome_command

到着

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

答え4

このスクリプトを「ミュート」したい場合は、/dev/null 2>&1ファイルを呼び出すcrontabファイルの行の末尾にスクリプトを配置できます。この方法では、スクリプトを毎月のフォルダに配置することはできません。次の方法でcrontabファイルを編集する必要があります。

contab -e

または、cron 設定を編集し、ここからメールを削除することもできます。すべてに説明があるここ

関連情報