Ich führe das folgende Shell-Skript auf einem Computer aus, auf dem der C ++ - Anwendungsserver auf Port 8080 ausgeführt wird, und im Shell-Skript führe ich eine URL aus und speichere die Antwort von dieser URL in der Variablen DATA.
Angenommen, derselbe App-Server ist inaktiv und kann die URL nicht ausführen. Anschließend wird die URL Retrying Again
30 Sekunden lang gedruckt und in den Energiesparmodus versetzt. Anschließend wird die gleiche URL erneut ausgeführt.
#!/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"
Und hier HOSTNAME
ist der lokale Hostname des Servers, auf dem ich mein obiges Shell-Skript ausführe.
Problemstellung:-
Was ich jetzt versuche zu tun, ist, wenn der Server ausfällt, dann wird es gedruckt, Retrying Again
so dass ich danach überprüfen möchte, ob der Port 8080
geöffnet ist $HOSTNAME
oder nicht. Wenn dies nicht der Fall ist, bedeutet dies, dass der Server inaktiv ist. Daher möchte ich den Server durch Ausführen dieses Befehls neu starten und dann 30 Sekunden lang in den Ruhezustand versetzen, wie oben im Shell-Skript gezeigt.
/opt/app/test/start_stop.sh start
Ist dies hier in meinem obigen Shell-Skript möglich?
Ich führe dieses Shell-Skript unter Ubuntu 12.04 aus.
lsof -i :8080 -sTCP:LISTEN
und ichnetstat -tulpn | grep :8080
bekomme nichts auf die Konsole, aber wenn ich es versuche, bekomme ich meinen Prozess, der auf Port 8080 läuft, warum ist es so?