菜鳥學習shell腳本後,動手練手簡單小實驗,使用shell腳本判斷nginx是否正常運行,如果沒有運行將nginx服務啓動起來。
一、基於進程判斷
1、獲取nginx進程來判斷該服務是否正常啓動。
ps -ef | grep nginx | grep -v grep | wc -l 輸出進程行數 然後判斷是否爲2 如果不是說明該服務沒有啓動。
grep -v grep 用來排除掉您所使用grep產生的進程。
2、shell 腳本編寫
先定義一個變量Web
#!/bin/bash
Web=`ps -ef |grep nginx|grep -v grep|wc -l`
if [ $Web -eq 2 ];then
echo "you nginx start"
exit 0
else
service nginx start
exit 1
fi
定義一個變量Web ,然後判斷如果不成立,將使用service nginx start啓動服務。
二、基於端口的判斷
雖然都是獲取的數字,但是由於端口不存在的話爲空,所以判斷是用的是字符串的判斷
也就是把判斷的運算符使用"="而不是"-eq"
#!/bin/bash
WebPort=`netstat -nlt |grep 80|awk '{print $4}'| cut -d : -f 2`
if [ "$WebPort" = "80" ];then
echo "you nginx start"
exit 0
else
service nginx start
exit 1
fi
當然還有好多方法,也在不斷學習和摸索中。(上述腳本對於數據庫等其他服務監控也可以)