shell腳本使用兩個數組,判斷一個變量是否在數組裏面的例子

  最近公司裏面每次上線後端app的load都會狂飆,只好重啓web服務器,以斷開舊的鏈接,好讓新的鏈接可以進來,因此,寫一個重啓的腳原本完成這項任務。php

  由於web服務器有兩個類型,nginx和apache,須要設置兩個數組,一個保存全部機器的列表,一個保存nginx的機器列表,在遍歷web服務器列表的同時,判斷是否屬於nginx的列表,若是是執行nginx fast-cgi的重啓,若是不是,重啓apache。nginx

  下面是腳本的具體內容:web

 

  
  
  
  
  1. #!/bin/bash  
  2. . common.sh  
  3. ng=( "10.10.3.2" "10.10.3.3" "10.10.3.13" "10.10.3.15" "10.10.3.39" )  
  4.  
  5. app_restart () {  
  6.   for i in "$@" 
  7.   do    
  8.       echo "${ng[@]}" |grep -wq "$i" 
  9.        if [ $? == 0 ];then 
  10.           TIME=`date +%F-%T`  
  11.           ssh 10.10.3.2 -t "sudo sudo /etc/init.d/php-fpm reload" 
  12.               if [ $? -ne 0 ];then 
  13.                   echo "$TIME $i Failed to start" |tee ./error_list  
  14.               fi    
  15.           echo "$TIME $i nginx" 
  16.       else 
  17.           TIME=`date +%F-%T`  
  18.           echo "$TIME $i" 
  19.           ssh $i -t "sudo /etc/init.d/httpd graceful" 
  20.               if [ $? -ne 0 ];then 
  21.                   echo "$TIME $i Failed to start" |tee ./error_list  
  22.               fi    
  23.           echo "$TIME $i apache" 
  24.  
  25.        fi    
  26.           sleep 10  
  27. #          sleep 1  
  28.     done  
  29. }  
  30.  
  31. case "$1" in 
  32.     city)  
  33.     app_restart ${arrCityAppServer[@]}   
  34. ;;  
  35.     my)   
  36.     app_restart ${arrMyAppServer[@]}   
  37. ;;  
  38.     *)    
  39.     echo $"Usage: $0 {city|my}" 
  40.     exit 1  
  41.     esac 
相關文章
相關標籤/搜索