Ich habe ein Bash-Skript geschrieben, um Apache neu zu starten, wenn es gehängt wurde und E-Mails an den Administrator gesendet wurden. Der Code ist unten gezeigt. Der Code startet Apache neu, wenn die Anzahl der Apache-Prozesse Null ist. Das Problem ist: Apache einige Zeit hängt und Prozesse ist immer noch nicht Null, in diesem Fall wird das Skript Apache nicht neu starten. Die benötigte ist: Wie ändere ich den Code, um Apache neu zu starten, wenn es gehängt und die Prozesse nicht Null ist.bash script zum automatischen Neustart von Apache
#!/bin/bash
if [ `pgrep apache2 -c` -le "0" ]; then
/etc/init.d/apache2 stop
pkill -u www-data
/etc/init.d/apache2 start
echo "restarting....."
SUBJECT="Apache auto restart"
# Email To ?
EMAIL="[email protected]"
# Email text/message
EMAILMESSAGE="apache auto restart done"
# send an email using /bin/mail
/bin/mail -s "$SUBJECT" "$EMAIL" "$EMAILMESSAGE"
fi
die Krankheit Fix, nicht die Symptome. Sie sollten sich fragen, wie Sie herausfinden können, warum Apache hängt (wahrscheinlich in ServerFault) und dann das beheben ... nicht, wie Sie es neu starten, wenn es hängt. – Juliano
Warum haben Sie das Rad hier neu erfunden, die Startup-Skripte in/etc/rc.d oder ähnlich (je nach Unix/Linux-Installation) hat die Möglichkeit, einen Neustart durchzuführen, aber überprüfen Sie wiederum Ihre Fehlerprotokolle, warum Sie muss den Server neu starten, normalerweise /etc/rc.d/3/rc.httpd restart oder ähnliches ... – t0mm13b
Hi. Juliano, du hast Recht. Ich bin auf der Suche nach der Ursache des Problems, aber ich denke, diese Art von Skripten ist ein "Muss", weil es in Zukunft wird es hängen bleiben und dieses Skript wird das Problem vorübergehend lösen. –