
サーバーは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
この電子メールの唯一の出力は、wget
andunzip
コマンドからのものです。スクリプトを編集してこの2行の末尾に置くこともできますが、> /dev/null
それは本当に最善の方法ですか?出力を生成するスクリプトにさらにコマンドを追加した場合は、常に各行> /dev/null
に追加する必要があります。このcronスクリプトで電子メール通知の出力を無効にする方法はありますか?
答え1
> /dev/null
スクリプトで引き続き使用することをお勧めします(-q
またはオプションを使用)。これにより、いずれかのコマンドでエラーが発生した場合、そのエラーは電子メールで送信されますが、正常な出力は抑制されます。wget
unzip
答え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 設定を編集し、ここからメールを削除することもできます。すべてに説明があるここ。