Sto eseguendo il mio script di shell sottostante su una macchina su cui è in esecuzione il server delle applicazioni c ++ sulla porta 8080 e nello script di shell sto eseguendo un URL e memorizza la risposta proveniente da tale URL nella variabile DATA.
Supponiamo che se lo stesso server delle applicazioni non è attivo, non sarà in grado di eseguire l'URL e quindi verrà stampato Retrying Again
e inattivo per 30 secondi, quindi eseguirà nuovamente lo stesso 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"
Ed ecco HOSTNAME
il nome host locale del server su cui sto eseguendo il mio script shell sopra.
Dichiarazione problema:-
Ora quello che sto cercando di fare è, se il server è inattivo, quindi verrà stampato, Retrying Again
quindi dopo voglio verificare se la porta 8080
è aperta $HOSTNAME
o meno. In caso contrario, significa che il server è inattivo, quindi voglio riavviare il server eseguendo questo comando e quindi dormire per 30 secondi, come mostrato sopra nello script della shell.
/opt/app/test/start_stop.sh start
È possibile farlo qui nel mio script della shell sopra?
Sto eseguendo questo script di shell su Ubuntu 12.04.
lsof -i :8080 -sTCP:LISTEN
e non sto ottenendo nulla sulla console ma se sto provando questonetstat -tulpn | grep :8080
ottengo il mio processo che è in esecuzione sulla porta 8080 perché è così?