Boehrsi.de - Blog

Linux - Prüfen ob ein Script oder Programm aktiv ist

Erstellt am event Uhr von account_circle Boehrsi in label Archiv

Jeder der selber einen Server (VServer, Root Server o.ä.) hat wird vermutlich schon einmal das Problem gehabt haben, dass der Server vielleicht mal in der Nacht unerwartet neu startete und dadurch verschiedene Dienste nicht wieder automatisch gestartet wurden. Dabei rede ich nicht von Web Diensten, den Datenbanken oder ähnlichem, sondern von Voice Servern, Games Servern oder ähnlichen Diensten auf euren VServern oder Roots. Also Dienste die meist von Hand eingerichtet und aktiviert werden. Ich hatte nun das Problem, dass ich vergessen hatte das ein Kernel Update am Server durchgeführt wird und dadurch waren einige der oben genannten Dienste nicht verfügbar. Also habe ich mir ein kleines Script geschrieben welches einfach per Cronjob ausgeführt wird. Somit bin ich immer auf der sicheren Seite und alle Dienste die aktiv sein sollen sind es auch, egal ob der Server neu startete oder ob der Dienst allgemein abstürzte. Fragen und Anregungen bitte wie immer in die Kommentare und ich werde sobald wie möglich antworten.

Simple Variante: Die erste Zeile im Script gibt die Shell an mit welcher gearbeitet wird. Die Zeile braucht euch im allgemeinen nicht weiter zu interessieren. Der Befehl pgrep sucht nach dem Prozessnamen und gibt zurück ob dieser gefunden wurde. Es folgt eine if Abfrage welche nun auf den jeweiligen Fall reagiert. Sollte der Mumble Server nicht aktiv sein wird er gestartet und vorher wird noch [Offline / Fehler] Mumble (Starte Programm) ausgegeben, wenn er aktiv ist wird auf der Konsole [Online] Mumble ausgegeben.

#!/bin/sh 
if [ $(pgrep murmur.x86) ]; 
  then 
    echo "[Online] Mumble" 
  else 
    echo "[Offline / Fehler] Mumble (Starte Programm)" 
    /pfad/zum/mumble/server/murmur.x86 
fi;

Umfangreiche Variante mit Ausgabeumleitung in eine Log Datei und Prüfung ob das Programm gestartet wurde: Als Ergänzung zur oberen Erklärung wird hier am Anfang die Variable Log erstellt und mit dem Pfad und der Datei gefüllt in der die Log Informationen gespeichert werden sollen. Alle Ausgaben werden mit einem Datum versehen (date Befehl) und dann in die Log Datei umgeleitet und nicht mehr direkt ausgegeben. Außerdem wird im unteren Teil des Scripts die Prüfung ob der Mumble Server aktiv ist erneut durchgeführt. So kann das Script eine Aussage treffen ob der Server gestartet werden konnte oder ob zum Beispiel die Startdatei des Mumble Servers an sich fehlt.

#!/bin/sh 

log=/pfad/zur/log/datei.txt

if [ $(pgrep murmur.x86) ]; 
  then 
    date >> $log
    echo "[Online] Mumble" >> $log 
  else 
    date >> $log 
    echo "[Offline / Fehler] Mumble (Starte Programm)" >> $log 
    /pfad/zum/mumble/server/murmur.x86 
    if [ $(pgrep murmur.x86) ]; 
      then 
        echo "[Online] Mumble (Programm gestartet)" >> $log 
      else 
        echo "[Offline / Fehler] Mumble (Programm konnte nicht gestartet werden)" >> $log 
    fi; 
fi;

Bezüglich der Einrichtung als Cronjob werde ich bald noch eine gesonderte News erstellen. Für alle die nicht warten wollen empfehle ich den Wiki Eintrag zum Thema auf Ubuntuusers.de open_in_new.

Related Links
Kommentare  
Kommentar erstellen
Mit dem Abschicken des Kommentars erklären sie sich mit der in der Datenschutzerklärung dargelegten Datenerhebung für Kommentare einverstanden. Spam, unangebrachte Werbung und andere unerwünschte Inhalte werden entfernt. Das Abonnieren via E-Mail ist nur für E-Mail Adressen erlaubt die Sie rechtmäßig administrieren. Widerrechtliche Abonnements werden entfernt.