
私は毎回Minecraftサーバーにワールドデータをバックアップするためにcronを使用するバックアップスクリプトを設定しました。スクリプトのtarに--ignore-command-errorを追加して手動で実行するとエラーが抑制されましたが、cronはまだ読み込み中にファイルが変更されたというメールメッセージを送信し、最終的には実行中でGot my mailがあふれます。毎時間。この問題を解決する方法を知っている人はいますか?スクリプトは次のとおりです。
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
答え1
Cronは、コマンドの実行中に表示される可能性があるすべての出力を含む電子メールを送信しようとします。クローンのマニュアルページから:
コマンドが実行されると、すべての出力がcrontabの所有者(またはcrontabのMAILTO環境変数がある場合はそのユーザー)にメールで送信されます。 -sオプションを使用して、すべてのジョブ出力をsyslogに送信することもできます。
したがって、特定のcrontabエントリに対してこれを無効にするには、すべてのコマンド出力をキャプチャしてファイルまたは/dev/null
.
30 * * * * notBraiamsBackup.sh >/dev/null 2>&1
答え2
/dev/null
すべてをパイピングする代わりに(何かが間違っているときに何が起こっているのかわからない場合があります)、次のようにスクリプトをログファイルにパイピングできます。
30 * * * * backup.sh > ~/logs/backup.log
メールの受信を停止するには、MAILTO
crontabファイルの先頭にある空の文字列に変数を設定します。
MAILTO=""
答え3
特定のcronジョブの電子メールが必要ない場合は、行の>/dev/null 2>&1
末尾に次のように追加します。
30 * * * * backup.sh >/dev/null 2>&1
答え4
以下を追加する必要があります。グヌタール注文する:--warning=ファイル変更なし
これにより、すべてが抑制されます。」%s: ファイルの読み込み中にファイルが変更されました。メッセージ。このソリューションを使用すると(すべてを/ dev / nullにリダイレクトするのではなく)、問題が発生したときにエラーメッセージを受け取ることができます。
とともに- 警告するタグさまざまなメッセージを有効または無効にできます。アスファルト印刷。利用可能なすべてのキーワードを含むマニュアルの関連部分は次のとおりです。https://www.gnu.org/software/tar/manual/html_section/tar_27.html。
注:「を追加するといいえ -"キーワードの前にメッセージが表示されません。