셸 다 중 프로 세 스 병행 프로 그래 밍

셸 다 중 프로 세 스 병행 프로 그래 밍
셸 에서 다 중 프로 세 스 를 사용 하여 병행 처리 하 는 것 은 매우 편리 합 니 다. 만약 에 하나의 정시 작업 이 동시에 ping 호스트 ip 목록 이 라면 대상 기기 가 다운 되 었 는 지 확인 하면 셸 의 다 중 프로 세 스 로 이 루어 질 수 있 습 니 다. 동시에 ping 여러 호스트 는 정시 작업 의 수행 에 영향 을 주지 않 습 니 다.셸 의 실현 방식 은 & 기 호 를 통 해 실행 할 프로 세 스 백 엔 드 를 실행 한 다음, 메 인 셸 은 wait 를 통 해 모든 백 엔 드 가 실 행 될 때 까지 기다 린 다음, 메 인 셸 을 종료 하 는 것 입 니 다.다음은 심장 박동 검사 스 크 립 트 입 니 다. ping 을 통 해 기계 가 도달 할 수 있 는 지 를 대량으로 검사 하고 도달 하지 못 하면 예비 기계 의 서 비 스 를 사용 하여 위 챗 경 고 를 보 냅 니 다.
#!/bin/bash

cd ~/scripts
# $1:host $2:server_type $3:port $4=start_server
#              
function heartbeat_detection() {
    ping_loss=`ping -c 6 $1 | grep "100% packet loss"`
    Date=`date +"%Y-%m-%d %H:%M:%S"`
    if [ -z "$ping_loss" ]; then
        echo -e "Date: $Date|Host: $1|Monitor: Ping is ok." >> monitor_result.log
    else
        echo -e "Date: $Date|Host: $1|Problem: Unreachable for 2 minutes..." >> monitor_result.log
        python wechat_alert/wechat_alert.py "@all" "`Date: date +%F %H:%M:%S` Host:$1 Server_type:$2 Status:Down..."
        service_port=`netstat -lnp | grep $3 | awk '{print $NF}' | awk -F '/' '{print $1}'`
        if [ -z $service_port ]; then
            sh $4
        fi
    fi
}

for item in $(cat srv_list)
do
     host=`echo $item | awk -F '|' '{print $1}'`
     server_type=`echo $item | awk -F '|' '{print $2}'`
     port=`echo $item | awk -F '|' '{print $3}'`
     start_server=`echo $item | awk -F '|' '{print $4}'`
     #         (   )
     heartbeat_detection $host $server_type $port $start_server &
done
#           (  )
wait
Date=`date +"%Y-%m-%d %H:%M:%S"`
echo -e "Date: $Date|Heartbeta detection finished..."

좋은 웹페이지 즐겨찾기