例6
需求:检测本机3128端口的存活状态,不存活则重新启动。
因本机的3128端口的服务是用docker启动的,故启动命令和原启动命令不同
使用到的命令:while do done;if
while :
do
d=`date +%F\ %T`
n=`netstat -tunpl | grep -w 3128 | wc -l`
if [ $n -eq 0 ]
then
ID=`docker container ls | grep -v "CONTAINER" | awk '{print $1}'`
docker contianer stop $ID && yes | docker container prune
docker run --name squid -d --restart=always --publish 3128:3128 -v /usr/local/squid/etc/:/usr/local/squid/etc -v /usr/local/squid/var/logs/:/usr/l
ocal/squid/var/logs term319/squid:v4.8 2>/tmp/checksquid.err
echo "squid 在$d的时候已重新启动"
pn=`pgrep -l squid | wc -l`
if [ $pn -eq 0 ]
then
echo "squid 在$d的时候启动不成功,请检查!!!"
fi
fi
sleep 60
done
知识点:死循环和基本的逻辑判断,“yes | docker container prune” shell中的自动确认交互信息