我有一个备份脚本,可以作为cron作业运行,并创建/ var / log / messages /的每日备份。请注意,此脚本比实际应用更多的是为了学习经验。我已经添加了if / else语句,以在执行tar命令后检查退出代码。该脚本之前运行良好,但是在我添加了此功能后,该脚本挂起了。代码如下:
#!/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)
改变
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
第一种选择是,您可以在邮件正文中使用所需的任何文本。第二个选项将发送带有空消息正文的电子邮件。对第二封电子邮件命令重复相同的更改,以确保备份失败。
出于学习目的,应在确定成功之前检查创建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将基于所有三个命令的成功完成或该字符串中三个命令中的任何一个命令的不成功执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句