
AWS 上で自動 EBS バックアップを実行する bash スクリプトを作成しました。これは cronjob によって開始されます:
0 2 * * * /bin/bash /root/backup_snapshots.sh > backup.log 2>&1
これは完璧に動作しますが、次にやりたいことは、スクリプトが正常に実行されたかどうかの終了コードを追加することです (そのため、Nagios チェックを構成できます)。私がやろうとしていることはいくつかあります。
- /var/log/backup/ ディレクトリに backup.log を作成します。
- このチェックをより簡単に検出できるように、logrotate を毎日ローテーションするように設定します。
しかし、1 つ疑問があります。作成した backup.log ファイルに cron で終了コードを書き込むことは可能でしょうか。それとも、次のような実装にすべきでしょうか。
実際のスクリプトを開始し、次のような終了コードを持つスクリプトを使用して crontab エントリを作成します。
#!/bin/bash
/root/backup_snapshots.sh 2> /dev/null
if [ $? -eq 0 ]
then
echo "PASS"
else
echo "FAIL" >&2
fi
これをできるだけ簡単にしたいので、cron でそれができれば最高です! そうでない場合、次善策としては、backup_snapshots.sh を実行し、cron 経由で実行する bash スクリプトを作成することでしょうか?
答え1
#!/bin/bash
exec 1>/var/log/backup/backup_sbapshots.log 2>&1
if /root/backup_snapshots.sh
then
echo "PASS"
else
echo "FAIL"
fi
示されているように cron スクリプトを作成し、cronjob の実行ステータスをバックアップ ログ ファイルに記録します。ステートメントは独自のものである$?
ため、変数についてはどこにも言及されていないことに注意してください。if