Shell-Skript zum Neustarten der Dienste bei Ausfall / Absturz
Es ist üblich, dass der Prozess aus verschiedenen Gründen abstürzt / ausfällt. Sie können die Probleme untersuchen und beheben, dies kann jedoch einige Zeit dauern.
Eines können Sie jedoch sofort tun, um die Ausfallzeiten zu reduzieren Verfügbarkeit ist, den Neustart des Prozesses zu automatisieren, wenn er nicht funktioniert.
Lassen Sie uns dies über die Autobahn erledigen - Shell-Skripte
Sie können die folgenden Shell-Skripte zum Durchlaufen verwenden crontabDies überprüft die Dienste alle 15 Minuten (Sie können die Intervallzeit anpassen) und startet, wenn festgestellt wird, dass sie nicht ausgeführt werden. Hört sich cool an?
In diesem Artikel werde ich zwei Beispiele für das Starten der Dienste geben, wenn diese nicht verfügbar sind.
Wenn Sie CentOS / RHEL 7+ verwenden, können Sie dies auch überprüfen Dieser Artikel erklärt die Verwendung von systemd Neustarten.
Auto-restart MySQL, PHP-FPM, Nginx if down
Vor ein paar Wochen bin ich zu Geek Flare gezogen DigitalOcean mit EasyEngine und MariaDB stürzte zweimal in einer Woche ab.
Sie sehen, es stürzte am frühen Morgen ab und war länger als 3 Stunden außer Betrieb, was nicht gut ist. Es ist mein Blog, also keine Auswirkungen auf $$$, aber ich fühle mich trotzdem schlecht dafür.
Ok, Showtime jetzt ...
- Erstellen Sie eine Datei mit vi-Editoren an Ihrem gewünschten Speicherort (in dieser Demo werde ich sie unter /opt/startifdown.sh)
- Kopieren Sie das folgende Skript, fügen Sie es in die Datei ein und speichern Sie es
#!/bin/bash
#Scripts to start services if not running
ps -ef | grep nginx |grep -v grep > /dev/null
if [ $? != 0 ]
then
/etc/init.d/nginx start > /dev/null
fi
ps -ef | grep php5-fpm |grep -v grep > /dev/null
if [ $? != 0 ]
then
/etc/init.d/php5-fpm start > /dev/null
fi
ps -ef | grep mysql |grep -v grep > /dev/null
if [ $? != 0 ]
then
/etc/init.d/mysql start > /dev/null
fi
- Ändern Sie die Dateiberechtigung so, dass sie ausführbar ist
chmod 755 startifdown.sh
Testen Sie es manuell, um sicherzustellen, dass das Skript ausführbar ist.
Sie können den Dienst beenden und mithilfe des Skripts überprüfen, ob er gestartet wird. Sobald Sie zufrieden sind, können Sie dies in cron setzen, um alle 15 Minuten zu laufen.
*/1 * * * * /opt/startifdown.sh
Verweisen Sie meine Crontab Artikel Wenn Sie Inspiration zum Ändern der Intervallzeit benötigen.
Jetzt wird sich dieses kleine Skript darum kümmern Starten der Dienste Wenn es abgestürzt ist und ich diese 3 Stunden Ausfallzeit nicht habe.
Viel besser!
Auto-restart WebSphere DMGR, Nodeagent, JVM if down
Erstellen Sie eine Datei mit folgenden Skripten - ich werde sie startwasifdown.sh nennen
#!/bin/bash
#Scripts to start services if not running
#Specify DMGR Path Here
DMGR=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01
#Specify Profile Path Here
Profile=/opt/IBM/WebSphere/AppServer/profiles/AppSrv01
ps -ef | grep dmgr |grep -v grep > /dev/null
if [ $? != 0 ]
then
$DMGR/bin/startManager.sh > /dev/null
fi
ps -ef | grep nodeagent |grep -v grep > /dev/null
if [ $? != 0 ]
then
$Profile/bin/startNode.sh > /dev/null
fi
ps -ef | grep server1 |grep -v grep > /dev/null
if [ $? != 0 ]
then
$Profile/bin/startServer.sh server1 > /dev/null
fi
Hinweis: Ändern Sie den Pfad entsprechend Ihrer Umgebung und fügen Sie mehr Zeilen für mehr als eine JVM hinzu.
- Ändern Sie die Dateiberechtigung so, dass sie ausführbar ist
chmod 755 startwasifdown.sh
Testen Sie es manuell, und wenn Sie damit zufrieden sind, können Sie es in cron legen, um es alle 15 Minuten auszuführen, oder was auch immer zu Ihnen passt.
*/1 * * * * /opt/ startwasifdown.sh
Dies ist nur eine Richtlinie für Sie, um das Zeug zu automatisieren.
Liebe Automatisierung? Lernen Bash Shell Scripting.