cronジョブとして実行され、/var/log/messages/の毎日のバックアップを作成するバックアップスクリプトがあります。このスクリプトは、実際の適用よりも学習経験に近いです。 tarコマンドの実行後に終了コードを確認するためにif / elseステートメントを追加しました。以前はスクリプトは正常に機能していましたが、この機能を追加した後は機能が停止しました。コードは以下のように表示されます。
#!/bin/bash
admin="[email protected]"
of=messages-backup-$(date +%Y%m%d).tgz
cd /var/log/
tar -czvf $of messages
if [ $? -eq 0 ]; then
mail -s "Backup of /var/log/messages was successful!" $admin
exit 0
else
mail -s "Backup of /var/log/messages has failed!" $admin
exit 1
fi
cp $of /home/user/
rm -rf $of
出力:
[root@nidesant2 Scripts]# ./backup.sh
messages
^C
(Interrupt -- one more to kill letter)
答え1
変化
mail -s "Backup of /var/log/messages was successful!" $admin
到着
echo hello | mail -s "Backup of /var/log/messages was successful!" $admin
または
mail -s "Backup of /var/log/messages was successful!" $admin < /dev/null
最初のオプションでは、必要なテキストをメッセージ本文として使用できます。 2番目のオプションは、メッセージ本文が空の電子メールを送信します。バックアップが失敗した場合は、2 番目の email コマンドに対して同じ変更を繰り返します。
学習のためには、tarファイルの作成、コピー、削除が正常に完了したことを確認し、成功したかどうかを判断する必要があります。これを行うには、これを行います。
変化
tar -czvf $of messages
到着
tar -czvf $of messages && cp $of /home/user/ && rm -rf $of
また、この変更によりスクリプトのcp $of /home/user/
最後から削除することもできます。rm -rf $of
if / elseは、3つのコマンドがすべて正常に完了した場合、またはその文字列の3つのコマンドのいずれかが失敗したときに実行されます。