Shellscript soll laufenden Prozess suchen



  • Hallo,

    ich habe ein Problem das ein bestimmtes Programm sich unerklärlicher weise "selbst" beendet (wie auch immer)

    Bis ich den Fehler oder den schuldigen gefunden habe möchte ich ein Shellscript alle 1/2 Stunde laufen lassen das mir die laufenden Prozesse anzeigt und nach einem bestimmten Programmnamen durchsucht. Sollte der Prozess nicht existieren dann wird dieser einfach gestarte.
    Das ist zwar nicht elegant aber auf die Schnelle eine Lösung.

    Shellscript hatte ich schon einige Kleinigkeiten gemacht...aber sowas noch nicht.
    Es sollte so nach dem Motto funktionieren

    while {
    find "Programmname" | ps
    if (nicht dabei) starte Programmname
    sleep 1/2 Stunde
    }

    Danke
    worst_case



  • #!/bin/bash

    while true
    do
    if [ $(ps -e | grep programmname | wc -l) > 0 ]; then
    programm
    fi
    sleep 1800
    done



  • Alternativ man: pgrep verwenden.



  • das einfachste und sicherste (falls ein programm unter gleichem namen läuft) dürfte IMHO wohl "pidof /path/to/program" sein... das halt dann in ein script verwurschteln... zb imhoteps



  • Ähm wie wärs das ganze in der Konsole zu starten (aber nicht als Dämon), dann kannst du dir die ganzen Fehlermeldungen ansehen und dein skript so gestalten:

    while true
    do
    "pfad zu programm"
    done

    Das wäre doch am einfachsten dann läuft das Prog immer...



  • Hallo,

    ich habe es wie "imhotep" beschrieben, gemacht...und es funktioniert.:D
    Nun möchte ich es aber noch verstehen.🙄
    Die Befehle sind soweit klar, bis auf "wc -l" ...was bedeutet das bzw. was macht das Script da.

    Danke
    worst_case



  • worst_case schrieb:

    Die Befehle sind soweit klar, bis auf "wc -l" ...was bedeutet das bzw. was macht das Script da.

    "wc -l" zählt Zeilen.
    Im Falle dieses Skripts wird ausgewertet, ob "ps -e | grep programmname" irgendwelche Resultate liefert.

    flammenvogel: Schlechte Idee.
    Crax: pidof ist dafür nicht so gut wie pgrep geeignet, zumindest wenn Du nicht weißt, mit welcher Kommandozeile das Programm gestartet wurde.



  • warum ist das ne schlechte idee?

    man kann das jetzt noch um einen schutz erweitern der das skript abbricht wenn der prozess zu schnell beendet wird ...


Anmelden zum Antworten