Ich versuche, mit den folgenden Schritten Bash-Skript zu erreichen:Bash-Skript: Apache Server läuft oder nicht
1) Überprüfen Sie den Status von Apache Server
.
2) Wenn es läuft, nichts tun. Wenn dies nicht der Fall, gehen Sie dann 3.
3) zum Schritt Server nicht läuft, dann einen Fehler E-Mail zuerst und starten Sie den Server
4) Nach dem Neustart überprüfen, um den Status und sendet eine Bestätigungsemail
Hier ist mein Code:
#checking if Apache is running or not
ps auxw | grep apache2 | grep -v grep > /dev/null
if [ $? != 0 ]
then
mailx -s "Apache web server is down, Trying auto-restart" -$
# web server down, restart the server
sudo /etc/init.d/apache2 restart > /dev/null
sleep 10
#checking if apache restarted or not -- This is not working
ps auxw | grep apache2 | grep -v grep > /dev/null
if [ $? = 0 ]
then
mailx -s "Apache restarted succesfully" -r "$SENDEREMAIL" "$NOTIFYEMAIL" < /$
else
mailx -s "Restart Failed, try restarting manually" -r "$SENDEREMAIL" "$NOTIFYEMAIL" <$
fi
fi
der Code funktioniert einwandfrei, bis Schritt 3, und andernfalls/nicht auf Schritt 4 dh Skript arbeitet, ist nicht in der Lage, den Status des Servers nach dem Neustart zu überprüfen und Senden eine Bestätigungs-E-Mail Kann mir bitte jemand sagen, wo ich falsch liege?
fügen Sie "set -x" an den Anfang, führen Sie es erneut aus und fügen Sie diese Ausgabe hinzu – Dave
Gibt es einen besonderen Grund, warum Sie nicht den 'apachectl status' verwenden? – tripleee
kann ich wissen, warum runtergestimmt? Die Frage folgt jeder Regel von SO – user4943236