셸 다 중 프로 세 스 병행 프로 그래 밍
셸 에서 다 중 프로 세 스 를 사용 하여 병행 처리 하 는 것 은 매우 편리 합 니 다. 만약 에 하나의 정시 작업 이 동시에 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..."
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
셸 스 크 립 트 (다 중 스 레 드 대량 생 성 사용자)예 를 들 어 백업 데이터 베 이 스 는 100 개의 라 이브 러 리 가 있 고 정상 적 인 백업 효율 이 매우 낮 습 니 다.다 중 스 레 드 가 있 으 면 백업 하 는 데 10 시간 이 걸 릴 수도 있 었 는데 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.