1. 程式人生 > 實用技巧 >實戰3個SHELL指令碼

實戰3個SHELL指令碼

實戰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