Prüfen ob Skript läuft, PID File in /var/run

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Hobbystern, 12.12.2010.

  1. #1 Hobbystern, 12.12.2010
    Hobbystern

    Hobbystern Wahl-Debianer

    Dabei seit:
    02.02.2007
    Beiträge:
    186
    Zustimmungen:
    0
    Ort:
    westl. Ruhrgebiet
    Hallo Gemeinde,

    ich habe ein "KeepAlive" Skript, dessen ganze Aufgabe es ist ein Programm immer am Leben zu erhalten.

    Ich habe nunmehr ein Pidfile mit "touch" angelegt, welches dann existiert, wenn das Skript läuft - so sollte es nie doppelt laufen.

    Was passiert eigentlich wenn das Skript abgebrochen wird und keine zeit mehr hat das PID File zu löschen - wie kann ich es geschickt umgehen das es nicht passiert, das das Skript nicht mehr startet weil ein "totes" PIDFile existiert..?

    Code:
    ...
    SAFE_PID=/var/run/safe_asterisk.pid             # Unsere PID
    PIDNUTZEN=yes
    
    if [ -e ${SAFE_PID} ]; then
            if [ ${PIDNUTZEN} == "yes" };then
                    # Start verweigern...
                    echo "${SAFE_PID} EXISTIERT!! Safe_Asterisk wird anscheinend doppelt ausgefuehrt!! START VERWEIGERT!!"
                    exit 0
            else
                    #Start erlauben
                    echo "${SAFE_PID} EXISTIERT!! Safe_Asterisk wird anscheinend doppelt ausgefuehrt!! Starte trotzdem...
            fi
    else
            touch ${SAFE_PID}
    fi
    
    Ich denke da an einen Reset des Rechners (aua) oder sonstwas...

    Dank für Eure Hilfe!
    Stefan
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Lord Kefir, 12.12.2010
    Lord Kefir

    Lord Kefir König

    Dabei seit:
    10.06.2004
    Beiträge:
    944
    Zustimmungen:
    0
    Ein recht verbreiteter Weg ist es, die Prozess-ID zu speichern. Sollte Deine PID Datei existieren kannst Du aus ihr die Prozess-ID auslesen und dann testen, ob der Prozess noch läuft.


    Gruß,

    Lord Kefir
     
  4. #3 Hobbystern, 12.12.2010
    Hobbystern

    Hobbystern Wahl-Debianer

    Dabei seit:
    02.02.2007
    Beiträge:
    186
    Zustimmungen:
    0
    Ort:
    westl. Ruhrgebiet
    Hi Kefir,

    ich habe das hier so gefunden (Google)

    Code:
    if { [ file exists /var/run/app.pid ] == 1 } {
        if {  [ catch { exec ps h [ exec cat /var/run/app.pid ] } ] == 0 } {
            # APP Process is already running, exit
            puts "APP process is already running"
            exit
        } else {
            # Remove old pid file, create new pid file
            exec rm /var/run/app.pid
            exec echo [ pid ] >  /var/run/app.pid
        }
    } else {
        # create new pid file
        exec echo [ pid ] > /var/run/app.pid
    }
    
    Woher nehme ich die pid wenn ich doch nun (wenigstens am Anfang) doppelt existiere - mache ich das mit grep etc finde ich mich selber ...
    Denkfehler?! Ich glaube schon, die pid darf ich halt erst speichern wenn ich geprüft habe das sie nicht die richtige ist - und suchen müsste ich nach der pid und nicht nach dem prozessnamen, richtig?

    LG Stefan
     
Thema:

Prüfen ob Skript läuft, PID File in /var/run

Die Seite wird geladen...

Prüfen ob Skript läuft, PID File in /var/run - Ähnliche Themen

  1. property-file per skript prüfen

    property-file per skript prüfen: Hallo... ich hab folgendes property-file <!-- yyy--> integration=yyy.xxxx.de integration_user=bbb integration_password=ccc...
  2. LiMux: Expertengruppe soll mögliche Rückkehr zu Windows prüfen

    LiMux: Expertengruppe soll mögliche Rückkehr zu Windows prüfen: Das von Münchens ehemaligem Oberbürgermeister Christian Ude eigentlich als abgeschlossen erklärte Migrationsprojekt sämtlicher 15000 PCs der...
  3. IF- Anweisen auf einen Bereich prüfen

    IF- Anweisen auf einen Bereich prüfen: Hallo zusammen, kann man in einer IF- Anweisen auf einen Bereich prüfen, z.B. wenn Wert zwischen 7 bis 15 liegt dann … sonst nix :) ? Im...
  4. Prüfen ob ein Datum innerhalb letzten 2 Wochen liegt

    Prüfen ob ein Datum innerhalb letzten 2 Wochen liegt: Hallo, ich bräuchte eine Funktion die prüft ob ein Datum im Format tt.mm.JJJJ innerhalb der letzten 2 Wochen liegt. Oder anders ausgedruckt, ob...
  5. mit einem prüfbefehl mehrere verzeichnisse prüfen (z.b ../check_disk -w 1000 -c 2000)

    mit einem prüfbefehl mehrere verzeichnisse prüfen (z.b ../check_disk -w 1000 -c 2000): hallo leute, wie kann ich mit nur einem prüfbefehl mehrere verzeichnisse auf ihre belegung abfragen und dazu noch schwellwerte vergeben ? bis...