Estou executando meu script de shell abaixo em uma máquina na qual o servidor de aplicativos c ++ está sendo executado na porta 8080 e no script de shell estou executando uma URL e armazena a resposta proveniente dessa URL na variável DATA.
Mas suponha que se o mesmo servidor de aplicativos estiver inativo, ele não poderá executar a URL, imprimirá Retrying Again
e permanecerá em suspensão por 30 segundos e depois executará o mesmo URL novamente.
#!/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"
E aqui HOSTNAME
está o nome do host local do servidor no qual estou executando meu script de shell acima.
Declaração do problema: -
Agora, o que estou tentando fazer é que, se o servidor estiver inativo, ele será impresso. Retrying Again
Depois disso, quero verificar se a porta 8080
está aberta $HOSTNAME
ou não. Caso contrário, significa que o servidor está inoperante, por isso desejo reiniciar o servidor executando este comando e, em seguida, durar 30 segundos, conforme mostrado acima no script de shell.
/opt/app/test/start_stop.sh start
Isso é possível fazer aqui no meu script shell acima?
Estou executando este shell script no Ubuntu 12.04.
lsof -i :8080 -sTCP:LISTEN
e não estou conseguindo nada no console, mas se estou tentando issonetstat -tulpn | grep :8080
, recebo meu processo que está sendo executado na porta 8080, por que é assim?