分支與循環結構
if語句是實際生產工做中最重要且最經常使用的語句,因此,必須掌握牢固。 mysql
if條件句
if條件句語法
語法 nginx
-
if [ 條件 ]
-
then
-
指令
-
fi
-
或
-
if [ 條件 ];then
-
指令
-
fi
條件表達式[ -f "$file1" ]&& echo 1,至關於下面的if語句。 web
-
if [ -f "$file1" ];then
-
echo 1
-
fi
-
if [ 條件 ]
-
then
-
指令集1
-
else
-
指令集2
-
fi
條件表達式[ -f "$file1" ]&& echo 1||echo 0,至關於雙分支if [ -f "$file1" ];then echo 1;else echo 0;fi。 sql
-
if 條件
-
then
-
指令
-
elif 條件
-
then
-
指令
-
elif 條件
-
then
-
指令
-
...
-
else
-
指令
-
fi
單分支if條件句
開發shell腳本判斷系統剩餘內存的大小,若是低於100M就郵件報警給管理員,並加入系統定時任務每三分鐘執行一次檢查。 shell
free -m|awk 'NR==2{print $4}' 數據庫
-
[root@lamp ~]# cat free_m.sh
-
#!/bin/bash
-
-
FREE=`free -m|awk 'NR==3{print $4}'`
-
if [ $FREE -lt 100 ]
-
then
-
echo "warning:The available memory $FREE."
-
exit 0
-
fi
-
echo "The available memory $FREE."
雙多分支if條件句
用if雙分支實現read讀入的方式比較兩個數的大小。 bash
-
[root@lamp ~]# cat c3.sh
-
#!/bin/bash
-
read -p "Pls input two nums: " num01 num02
-
[ -z $num01 ]&&{
-
echo "the num01 you input must be int."
-
exit 2
-
}
-
[ -z $num02 ]&&{
-
echo "the num02 you input must be int."
-
exit 2
-
}
-
expr $num01 + $num02 + 1 &>/dev/null
-
[ $? -ne 0 ]&&{
-
echo "the num you input must be int."
-
exit 2
-
}
-
if [ $num01 -lt $num02 ]
-
then
-
echo "$num01 < $num02."
-
elif [ $num01 -gt $num02 ]
-
then
-
echo "$num01 > $num02."
-
else
-
echo "$num01 = $num02."
-
fi
用if雙分支實現對nginx或mysql服務是否正常進行判斷,使用進程數、端口、url的方式判斷,若是進程沒起,把進程啓動。 curl
web服務和數據庫(mysql)的監控方法。 tcp
一、端口監控 this
本地監控:netstat、ss、lsof
遠程監控:telnet、nmap、nc
telnet監控端口
-
[root@lamp ~]# echo -e "\n"|telnet www.baidu.com 80|grep Connected|wc -l
-
Connection closed by foreign host.
-
1
nmap監控端口
-
[root@lamp ~]# nmap www.baidu.com -p 80|grep open|wc -l
-
1
nc監控端口
-
[root@lamp ~]# nc -z 192.168.163.128 22|grep succeeded|wc -l
-
1
二、進程監控
本地監控:ps -ef|grep mysql|wc -l
三、wget、curl,http方式根據返回值或者返回內容判斷。
四、header(http),http方式根據狀態碼判斷。
五、數據庫特有經過mysql客戶端鏈接,根據返回值或者返回內容判斷。
-
[root@lamp ~]# cat check_db.sh
-
#!/bin/bash
-
#local
-
if [ "`netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'`" = "3306" ]
-
#if [ `ps -ef|grep mysql|grep -v grep|wc -l` -gt 0 ]
-
#if [ `netstat -lntup|grep mysqld|wc -l` -gt 0 ]
-
#if [ `lsof -i tcp:3306|wc -l` -gt 0 ]
-
-
#remote
-
#if [ `nmap 192.168.1.123 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ]
-
#if [ `nc -w 2 192.168.1.123 3306 &>/dev/null&&echo ok|grep ok|wc -l` -gt 0 ]
-
then
-
echo "Mysql is Running."
-
else
-
echo "Mysql is Stopped."
-
/deta/mysql start
-
fi
-
[root@lamp ~]# cat check_web.sh
-
#!/bin/bash
-
if [ "`curl -I -s -o /dev/null -w "%{http_code}\n" http://192.168.1.123`" = "200" ]
-
#if [ `curl -I http://192.168.1.123 2>/dev/null|head -1|egrep "200|302|301"|wc -l` -eq 1 ]
-
#curl -s http://192.168.1.123 &>/dev/null
-
#if [ $? -eq 0 ]
-
#if [ "`curl -s http://192.168.1.123 &>/dev/null&&echo $?`" = "0" ]
-
#if [ "`curl -s http://192.168.1.123`" = "bbs" ]
-
then
-
echo "httpd is running."
-
else
-
echo "httpd is stopped."
-
fi
經過傳參的方式往/etc/user.conf裏添加用戶,具體要求以下:
一、命令用法:USAGE:sh adduser {-add|-del|-search} username
二、傳參要求:若是參數爲-add,表示添加後面接的用戶名;若是參數爲-del,表示刪除後面接的用戶名;若是參數爲-search,表示查找後面接的用戶名。
三、若是有同名的用戶則不能添加,沒有對應用戶則無需刪除,查找到用戶以及沒有用戶時給出明確提示。
四、/etc/user.conf不能被全部外部用戶之間刪除或修改。
-
[root@lamp ~]# cat user.sh
-
#!/bin/bash
-
ROOT_UID=0
-
-
if [ "$UID" -ne "$ROOT_UID" ]
-
then
-
echo "Mast be root to run this script."
-
exit 1
-
fi
-
if [ $# -ne 2 ]
-
then
-
echo "USAGE:sh $0 {-add|-del|-search} username."
-
exit 2
-
fi
-
check=$1
-
name=$2
-
if [ "$check" = "add" ]
-
then
-
result=`cat /etc/user.conf|grep -Fx "$name"`
-
[ -z $result ]&&{
-
echo "$name" >> /etc/user.conf
-
echo "user add "$name" is ok."
-
exit 0
-
}
-
echo "user $name is in."
-
exit 0
-
elif [ "$check" = "del" ]
-
then
-
result=`cat /etc/user.conf|grep -Fx "$name"`
-
[ -z $result ]&&{
-
echo "user "$name" not find."
-
exit 0
-
}
-
sed -ri /^$name$/d /etc/user.conf
-
echo "user del "$name" is ok."
-
elif [ "$check" = "search" ]
-
then
-
result=`cat /etc/user.conf|grep -Fx "$name"`
-
[ -z $result ]&&{
-
echo "user $name not find."
-
exit 0
-
}
-
echo $result
-
exit 0
-
else
-
echo "USAGE:sh $0 {-add|-del|-search} username."
-
exit 1
-
fi
獲取文件md5值,防篡改。
-
[root@lamp ~]# find ./ -type f|xargs md5sum
將md5值寫入文件。
-
[root@lamp ~]# find ./ -type f|xargs md5sum >/tmp/md5list
比較md5值。
-
[root@lamp ~]# md5list -c /tmp/md5list