Wie starte ich Dienste automatisch neu, wenn sie nicht verfügbar sind?
Shell-Skript zum Neustarten der Dienste bei Ausfall / Absturz
Es ist üblich, dass process zum Absturz/Ausfall aus verschiedenen Gründen, die Sie untersuchen könnenate und die Probleme beheben, aber das kann ein wenig Zeit in Anspruch nehmen.
Eines können Sie jedoch sofort erledigenateum die Ausfallzeiten besser zu reduzieren Verfügbarkeit ist automate Neustart des process wenn es unten ist.
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.
Automatischer Neustart von MySQL, PHP-FPM, Nginx, falls ausgefallen
Vor ein paar Wochen bin ich zu Geek Flare gezogen DigitalOcean mit EasyEngine und MariaDB stürzte zweimal in einer Woche ab.
Sie sehen, dass es am frühen Morgen abgestürzt ist und mehr als drei Stunden lang nicht funktioniert hat, was nicht gut ist. Es ist mein Blog, also kein $$$ impact aber es tut mir immer noch leid.
Ok, Showtime jetzt ...
- Create eine Datei mit vi-Editoren an Ihrem gewünschten Speicherort (in dieser Demo werde ich sie unter platzieren). /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 manuellally 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!
Starten Sie WebSphere DMGR, Nodeagent und JVM automatisch neu, wenn sie nicht verfügbar sind
Create 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 manuellally, und wenn Sie damit zufrieden sind, können Sie dies in cron einfügen, um es alle 15 Minuten oder wh auszuführenateEs passt wirklich zu dir.
*/1 * * * * /opt/ startwasifdown.sh
Dies ist nur eine Richtlinie für die Automatisierungate das Zeug.
Liebe Automatisierung? Lernen Bash Shell Scripting.