Shell-Skript zum Neustart der Dienste bei Ausfall/Absturz

Es kommt häufig vor, dass der Prozess aus verschiedenen Gründen abstürzt/abbricht. Sie können die Probleme untersuchen und beheben, aber das kann ein wenig Zeit kosten.

Was Sie jedoch sofort tun können, um die Ausfallzeit zu verringern und die Verfügbarkeit zu verbessern, ist ein automatischer Neustart des Prozesses, wenn er ausgefallen ist.

Lassen Sie uns dies über den Freeway erledigen – Shell-Skripte

Sie können die folgenden Shell-Skripte über crontab laufen lassen, die die Dienste alle 15 Minuten überprüfen (Sie können die Intervallzeit anpassen) und starten, wenn sie nicht laufen. Klingt gut?

In diesem Artikel gebe ich Ihnen zwei Beispiele für das Starten von Diensten, die nicht laufen.

Wenn Sie CentOS/RHEL 7 verwenden, können Sie auch diesen Artikel lesen, in dem erklärt wird, wie Sie systemd zum Neustart verwenden.

Automatischer Neustart von MySQL, PHP-FPM, Nginx bei Ausfall

Als ich vor einigen Wochen Geek Flare mit EasyEngine auf DigitalOcean umzog, stürzte MariaDB innerhalb einer Woche zweimal ab.

mariadb-crashed

Sie sehen, dass es am frühen Morgen abgestürzt ist und mehr als 3 Stunden lang nicht funktioniert hat, was nicht gut ist. Es ist mein Blog, also keine $$$ Auswirkungen, aber ich fühle mich trotzdem schlecht dabei.

Ok, jetzt ist Showtime..

  • Erstellen Sie eine Datei mit dem vi-Editor an dem von Ihnen gewünschten Ort (in dieser Demo werde ich sie unter /opt/startifdown.sh ablegen )
  • Kopieren Sie das folgende Skript und fügen Sie es in die Datei ein und speichern Sie es
#!/bin/bash
#Skripte zum Starten von Diensten, wenn diese nicht laufen
ps -ef | grep nginx |grep -v grep > /dev/null
wenn [ $? != 0 ]
dann
       /etc/init.d/nginx start > /dev/null
fi
ps -ef | grep php5-fpm |grep -v grep > /dev/null
if [ $? != 0 ]
dann
       /etc/init.d/php5-fpm start > /dev/null
fi
ps -ef | grep mysql |grep -v grep > /dev/null
if [ $? != 0 ]
dann
       /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 anhalten und das Skript verwenden, um zu prüfen, ob er gestartet wird. Wenn Sie zufrieden sind, können Sie das Skript in cron einfügen, damit es alle 15 Minuten ausgeführt wird.

*/1 * * * * /opt/startifdown.sh

Schauen Sie in meinem crontab-Artikel nach, wenn Sie Anregungen für die Änderung der Intervallzeit benötigen.

Jetzt kümmert sich dieses kleine Skript darum, die Dienste zu starten, wenn sie abgestürzt sind, und ich habe diese 3 Stunden Ausfallzeit nicht mehr.

Viel besser!

Automatischer Neustart von WebSphere DMGR, Nodeagent, JVM bei Ausfall

Erstellen Sie eine Datei mit folgenden Skripten – ich werde sie startwasifdown.sh nennen

#!/bin/bash
#Skripte zum Starten von Diensten, wenn diese nicht laufen
#DMGR-Pfad hier spezifizieren
DMGR=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01
#Pfad für das Profil hier angeben
Profil=/opt/IBM/WebSphere/AppServer/profiles/AppSrv01
ps -ef | grep dmgr |grep -v grep > /dev/null
wenn [ $? != 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: Passen Sie den Pfad an Ihre Umgebung an und fügen Sie weitere 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 dies in cron einfügen, damit es alle 15 Minuten oder wie immer Sie wollen ausgeführt wird.

*/1 * * * * /opt/ startwasifdown.sh

Dies ist nur ein Leitfaden für Sie, um die Dinge zu automatisieren.

Sie lieben Automatisierung? Lernen Sie mehr über Bash-Shell-Skripte.