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