我在端口8080上运行c ++应用程序服务器的计算机上运行下面的Shell脚本,并且在Shell脚本中,我正在执行URL并将来自该URL的响应存储在DATA变量中。
但是,假设同一台应用服务器已关闭,则它将无法执行该URL,然后将其打印Retrying Again
并休眠30秒,然后再次执行相同的URL。
#!/bin/bash
HOSTNAME=$hostname
DATA=""
RETRY=15
echo $HOSTNAME
while [ $RETRY -gt 0 ]
do
DATA=$(wget -O - -q -t 1 http://$HOSTNAME:8080/beat)
if [ $? -eq 0 ]
then
break
else
echo "Retrying Again" >&2
# restart the server
let RETRY-=1
sleep 30
fi
done
echo "Server is UP"
这HOSTNAME
是我在上面运行shell脚本的服务器的本地主机名。
问题陈述:-
现在我想做的是,如果服务器关闭,它将打印出来,Retrying Again
因此之后我要检查端口8080
是否打开$HOSTNAME
。如果不是,则表示服务器已关闭,因此我想通过执行此命令来重新启动服务器,然后休眠30秒,如上面的Shell脚本所示。
/opt/app/test/start_stop.sh start
我上面的shell脚本可以在这里做吗?
我在Ubuntu 12.04上运行此Shell脚本。
lsof -i :8080 -sTCP:LISTEN
,但控制台上什么也没得到,但是如果我试了一下,netstat -tulpn | grep :8080
那么我得到的进程正在端口8080上运行,为什么会这样呢?