셸 스 크 립 트 는 두 개의 배열 을 사용 하여 하나의 변수 가 배열 에 있 는 지 여 부 를 판단 합 니 다.

2050 단어
최근 회사 에 서 는 온라인 백 엔 드 app 의 load 가 폭발 할 때마다 웹 서버 를 다시 시작 하여 오래된 연결 을 끊 고 새로운 연결 이 들 어 올 수 있 도록 재 부팅 스 크 립 트 를 써 서 이 작업 을 수행 할 수 밖 에 없습니다.
  웹 서버 는 두 가지 유형 이 있 기 때문에 nginx 와 apache 는 두 개의 배열 을 설정 해 야 합 니 다. 하 나 는 모든 기계 의 목록 을 저장 하고 nginx 를 저장 하 는 기계 목록 입 니 다. 웹 서버 목록 을 옮 겨 다 니 는 동시에 nginx 의 목록 에 속 하 는 지 여 부 를 판단 해 야 합 니 다. nginx fast - cgi 의 재 부팅 을 실행 하 는 것 이 라면 그렇지 않 으 면 apache 를 다시 시작 합 니 다.
  다음은 스 크 립 트 의 구체 적 인 내용 입 니 다.
 
#!/bin/bash  
  • . common.sh  

  • ng=( "10.10.3.2" "10.10.3.3" "10.10.3.13" "10.10.3.15" "10.10.3.39" )  
  •  

  • app_restart () {  
  •   for i in "$@" 

  •   do    
  •       echo "${ng[@]}" |grep -wq "$i" 

  •        if [ $? == 0 ];then 
  •           TIME=`date +%F-%T`  

  •           ssh 10.10.3.2 -t "sudo sudo /etc/init.d/php-fpm reload" 
  •               if [ $? -ne 0 ];then 

  •                   echo "$TIME $i Failed to start" |tee ./error_list  
  •               fi    

  •           echo "$TIME $i nginx" 
  •       else 

  •           TIME=`date +%F-%T`  
  •           echo "$TIME $i" 

  •           ssh $i -t "sudo /etc/init.d/httpd graceful" 
  •               if [ $? -ne 0 ];then 

  •                   echo "$TIME $i Failed to start" |tee ./error_list  
  •               fi    

  •           echo "$TIME $i apache" 
  •  

  •        fi    
  •           sleep 10  

  • #          sleep 1  
  •     done  

  • }  
  •  

  • case "$1" in 
  •     city)  

  •     app_restart ${arrCityAppServer[@]}   
  • ;;  

  •     my)   
  •     app_restart ${arrMyAppServer[@]}   

  • ;;  
  •     *)    

  •     echo $"Usage: $0 {city|my}" 
  •     exit 1  

  •     esac 
     
    다음으로 전송:https://blog.51cto.com/cathyz/819704

    좋은 웹페이지 즐겨찾기