實戰3個SHELL指令碼
阿新 • • 發佈:2020-07-16
實戰1:檢查伺服器執行狀態指令碼
[root@tzPC ~]# cat check.sh
#!/bin/bash
if [ $# -ge 1 ] ;then
systemctl status $1 > /dev/null
if [ $? -eq 0 ];then
echo "$1 服務正在執行!"
else
systemctl start $1
fi
else
echo "執行指令碼的格式"
echo "sh $0 服務名"
fi
實戰2:根據學生成績判斷優良中差
[root@tzPC ~]# cat check_cj.sh #!/bin/bash read -p "請輸入你的成績 " cj if [ $cj -ge 0 ] && [ $cj -le 59 ] ;then echo "補考" elif [ $cj -ge 60 ] && [ $cj -le 70 ] ;then echo "良好" elif [ $cj -ge 71 ] && [ $cj -le 85 ] ;then echo"好" elif [ $cj -ge 86 ] && [ $cj -le 100 ] ;then echo "優秀" else echo "成績的有效範圍是0-100之間" fi
實戰3:每週一晚上3:00 ,備份資料庫伺服器上webdb庫的所有資料到系統的/mysqlbak目錄裡,使用系統日期做備份檔名。
[root@tzPC ~]# date +%Y-%m-%d 2020-07-16 [root@tzPC ~]# date +%F 2020-07-16
指令碼
[root@tzPc~]# vim mysqlbak.sh #!/bin/bash baknamefile=`date +%Y-%m-%d` bakdir=/mysqlbak user=root password=123 dbname=webdb [ -e $bakdir ] || mkdir $bakdir mysqldump -u$user -p$password --flush-logs $dbname > $bakdir/${baknamefile}-webdb.sql
備份/etc目錄
[root@tzPC~]# vim etcbak.sh #!/bin/bash baknamefile=`date +%Y-%m-%d` bakdir=/etcbak srcdir=/etc [ -e $bakdir ] || mkdir $bakdir tar zcvf ${bakdir}/${baknamefile}-etc.tar.gz /etc/ echo "========================" ls -lh ${bakdir}/${baknamefile}-etc.tar.gz echo "back etc is ok!"
新增許可權
chmod +x etcbak.sh
新增任務計劃
crontab -e
將錯誤輸出到標準輸出然後倒入空洞檔案
0 3 * * * /home/etcbak.sh 2>&1 >/dev/null