Estoy ejecutando mi script de shell a continuación en una máquina en la que se ejecuta el servidor de aplicaciones c ++ en el puerto 8080 y en el script de shell estoy ejecutando una URL y almacena la respuesta proveniente de esa URL en la variable DATA.
Pero suponga que si el mismo servidor de aplicaciones está inactivo, no podrá ejecutar la URL y luego se imprimirá Retrying Again
y dormirá durante 30 segundos y luego ejecutará la misma URL nuevamente.
#!/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"
Y aquí HOSTNAME
está el nombre de host local del servidor en el que estoy ejecutando mi script de shell anterior.
Planteamiento del problema:-
Ahora lo que estoy tratando de hacer es, si el servidor está inactivo, se imprimirá, Retrying Again
así que después de eso quiero verificar si el puerto 8080
está abierto $HOSTNAME
o no. Si no, significa que el servidor está inactivo, por lo que quiero reiniciar el servidor ejecutando este comando y luego dormir durante 30 segundos como se muestra arriba en el script de shell.
/opt/app/test/start_stop.sh start
¿Es esto posible hacer aquí en mi script de shell anterior?
Estoy ejecutando este script de shell en Ubuntu 12.04.
lsof -i :8080 -sTCP:LISTEN
y no obtengo nada en la consola, pero si lo intentonetstat -tulpn | grep :8080
, obtengo mi proceso que se ejecuta en el puerto 8080 ¿por qué es así?