バックアップスクリプトのメールを送信するcronを停止しますか?


13

Minecraftサーバー上の世界データをcronを使用して1時間ごとにバックアップするバックアップスクリプトを設定しましたが、世界はプレイヤーによって絶えず編集されているため、tarは読み取り中にファイルが変更されたことを教えてくれました。スクリプトのtarに--ignore-command-errorを追加し、手動で実行するとエラーが表示されないようにしましたが、cronは読み取り中にファイルが変更されたことを知らせるメールメッセージを送信します。 1時間に1回実行します。誰でもこれを修正する方法を知っていますか?これはスクリプトです:

filename=$(date +%Y-%m-%d)
cd /home/minecraft/Server/
for world in survival survival_nether survival_the_end creative superflat
do
if [ ! -d "/home/minecraft/backups/$world" ]; then
mkdir /home/minecraft/backups/$world
fi
find /home/minecraft/backups/$world -mtime +1 -delete
tar --ignore-command-error -c $world/ | nice -n 10 pigz -9 > /home/minecraft/backups/$world/$filename.tar.gz
done

回答:


22

Cronは、コマンドの実行時に発生した可能性のある出力を含む電子メールを送信しようとします。cronのmanページから:

コマンドを実行すると、出力はすべてcrontabの所有者(またはcrontabのMAILTO環境変数(存在する場合)で指定されたユーザー)にメールされます。-sオプションを使用して、ジョブ出力をsyslogに送信することもできます。

したがって、特定のcrontabエントリに対して無効にするには、すべてのコマンド出力をキャプチャして、ファイルまたはに送信し/dev/nullます。

30 * * * * notBraiamsBackup.sh >/dev/null 2>&1

1
D:私の例を使って!
ブライアム

@ブライアム-すみません、私は怠け者で、入力する気がしませんでした。とにかく同じものを入力したでしょう8-)。
slm

@ブライアム-それは良いですか?8-)。
slm

まさに私が探していたもので、素晴らしい作品です。
カーター

注7の私のCentOSのもの、crontabではないcron-s手段selinux context.....
WesternGun

13

すべてをパイピングする代わりに/dev/null(何かがうまくいかなかった場合に何が起こったのか分からないままにするかもしれません)、次のようなログファイルにスクリプトをパイピングできます。

30 * * * * backup.sh > ~/logs/backup.log

メールの受信を停止するにMAILTOは、crontabファイルの先頭で変数を空の文字列に設定するだけです。

MAILTO=""

4

特定のcronタスクのメールが必要ない場合>/dev/null 2>&1は、行の最後に追加するだけです。

30 * * * * backup.sh >/dev/null 2>&1

私はこの方法を選択します。あなたはすべてを追跡できなくなりましたが、きちんとしています。
WesternGun

0

gnu tarコマンドに次を追加する必要があります。--warning = no-file-changed

これにより、すべての「%s:ファイルが読み取られるときに変更されました」メッセージがすべて抑制されます。そして、このソリューションを使用することで(すべてを/ dev / nullにリダイレクトしないで)、物事が実際にうまくいかない場合でもエラーメッセージを受け取ることができます。


では--warningフラグあなたはその種類のメッセージの多くを有効にして無効にすることができタールプリント。:ここでは、使用できるすべてのキーワードを持つマニュアルの該当部分ですhttps://www.gnu.org/software/tar/manual/html_section/tar_27.htmlを

注:キーワードの前に「no-」を追加すると、メッセージが抑制されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.