shell監控服務程式是否啟動

gcvolcano發表於2018-09-17

shell指令碼規範:https://blog.csdn.net/weixin_38154393/article/details/70738671

docker-compose.yml指docker部署服務檔案,按行計算服務名稱及使用的埠號位置獲取埠號,判斷是否在程式中,這種方式不推薦使用,臨時抱佛腳的菜鳥程式設計

#!/bin/bash/
i=3
servicePids=$(docker ps -a|awk '{print $12}'|grep -v 'ago')
rows=$(awk 'END{print NR}' docker-compose.yml)
rows=$((rows))
echo "rows:"$rows
while [ "$i" -le "$rows" ]
do
   echo  "rows:"$rows
   j=$((i+3))
   newName=“”
   serviceName=$(awk  -F ':' 'NR=='"$i"' {print $1}' docker-compose.yml)
   portNum=$(awk  -F ':|"' 'NR=='"$j"' {print $2}' docker-compose.yml)
   echo "portNum:"$portNum
   if [ "$serviceName"  != "" ]
   then
        lastchar=${serviceName:(-1)}
        if [ -z "$(echo $lastchar|sed 's#[0-9]##g')" ]
                then
                newName=${serviceName%?}$portNum
        elif [ "$lastchar" != "" ]
                then
                newName=${serviceName}$portNum
        fi 
        k=0
        for pid in ${servicePids[@])}
        do
                id=${pid:(-4)}
                if [ "$id" == "$portNum" ]
                then   
                        k=1
                fi
        done
        if [ "$k" == 0 -a  "$portNum" != "" ]
        then
        echo $serviceName
        docker-compose -f docker-compose.yml restart $serviceName
        fi
   fi 
   i=$((i+17))
done

 

相關文章