J'exécute mon script shell ci-dessous sur une machine sur laquelle le serveur d'applications c ++ s'exécute sur le port 8080 et dans le script shell j'exécute une URL et stocke la réponse provenant de cette URL dans la variable DATA.
Mais supposons que si le même serveur d'applications est en panne, il ne pourra pas exécuter l'URL, puis il imprimera Retrying Again
et dormira pendant 30 secondes, puis exécutera à nouveau la même 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"
Et voici HOSTNAME
le nom d'hôte local du serveur sur lequel j'exécute mon script shell ci-dessus.
Énoncé du problème: -
Maintenant, ce que j'essaie de faire, c'est que si le serveur est en panne, il s'imprimera Retrying Again
donc après cela, je veux vérifier si le port 8080
est ouvert $HOSTNAME
ou non. Sinon, cela signifie que le serveur est en panne, donc je veux redémarrer le serveur en exécutant cette commande, puis dormir pendant 30 secondes comme indiqué ci-dessus dans le script shell.
/opt/app/test/start_stop.sh start
Est-ce possible de le faire ici dans mon script shell ci-dessus?
J'exécute ce script shell sur Ubuntu 12.04.
lsof -i :8080 -sTCP:LISTEN
et je n'obtiens rien sur la console mais si j'essayenetstat -tulpn | grep :8080
alors j'obtiens mon processus qui s'exécute sur le port 8080 pourquoi est-ce ainsi?