binary per script überwachen...

  • Hi leute,
    ich versuch grad erfolglos, per script eine bestimmte binary zu überwachen. Wenn das Ding mal crasht, soll es wieder aufgerufen werden. Dazu hab ich mir folgenden Code zusammengesucht:


    Bash
    #!/bin/sh
    if ps x |grep -v grep |grep -c testbinary;
    then
    echo `date` "in Ordnung....." >> /tmp/bastelscript.log
    else
    echo `date` "problem..." >> /tmp/bastelscript.log
    /usr/bin/testbinary
    fi



    Gerade war aber wieder so ein Moment, wo die "testbinary" abgestürzt war, trotzdem hat das script "in Ordnung" ausgegeben.
    Ich hab dann mal manuell den Befehl

    Code
    if ps x |grep -v grep |grep -c testbinary


    über telnet gestartet, und das Ergebnis war "0".
    Also kein laufender Prozess.


    Wieso geht das Script dann aber nicht in die else-Anweisung rein?


    Bin für jeden tip dankbar


    Basti

  • Mal so probiert?

    Bash
    #!/bin/sh
    if ps x |grep -v grep |grep -c testbinary; then
    echo `date` "in Ordnung....." >> /tmp/bastelscript.log
    else
    echo `date` "problem..." >> /tmp/bastelscript.log
    /usr/bin/testbinary
    fi
  • Das Script funktioniert grundsätzlich.


    Lass das Script aber auch mal die Ausgabe von "ps x" ausgeben. Die Ausgabe-Formatierung von "ps" hängt von so vielen Dingen ab, was schon mal im Script anders sein kann als interaktiv und manchmal wird der Pfad zum Binary irgendwo abgeschnitten...

  • ich nutze sowas auf meiner fritzbox:

    Code
    if [ -z "$(pidof BINARYNAME)" ]; then
           echo 'stopped'
          else
           echo 'running'
          fi
  • Danke, test ich gleich!
    IRgendwie ist halt das Problem, dass das script nie in die Else-Anwendung geht.
    Hab mal bisschen gegooglet, und in anderen, vergleichbaren scripten lautet die If-Bedingung immer
    if ps x |grep -v grep |grep -c testbinary >/dev/null


    was haltet ihr davon?

  • achtung, jetzt kommt ne richtig blöde Frage :grinning_squinting_face:


    Braucht man dieses "#!/bin/sh" eigentlich am Anfang jedes scripts?

  • ja, damit wird festgelegt mit welcher shell (gibt ja mehrere) das script ausgeführt werden soll


    alternativ script

    Bash
    #!/bin/sh
    if [ $(ps x |grep -v grep |grep -c testbinary) == 0 ]; then
    echo `date` "problem..." >> /tmp/bastelscript.log
    /usr/bin/testbinary
    else
    echo `date` "in Ordnung....." >> /tmp/bastelscript.log
    fi


    nur wenn die Abfrage 0 ergibt (läuft nicht) wird das testbinary neu gestartet, ist das Ergbebins der Abfrage >0 läuft alles (es gibt auch binaries, die mehrere Prozesse laufen haben )

    Gruß Fred


    Die Dreambox ist tot, es lebe die Dreambox


    2 Mal editiert, zuletzt von Fred Bogus Trumper ()

  • startest du das Script vom Telnet oder aus GUI, aus GUI wollen viele Scripte nicht laufen, eventuell mit realdaemon davor (realdaemon testbinary) probieren, ich kann den Thread mit realdaemon nicht mehr finden, gelöscht vom Author oder vom Board?, wenn man diese "australischen Laufvögel" gar nicht erwähnt ist das Tool sehr nützlich


    mrvica

    • Offizieller Beitrag

    Wenn ein binary crasht, will es längst nicht sagen das er aus ist, und mit ps x und pidof wird das binary als gestartet angezeigt.
    Er läuft nur einfach nicht weiter.


    E2 Box: TWO ~ ONE ~ DM8000 ~ DM7080 ~ DM7020HD~ DM9x0 ~ DM820 ~ DM800(SE(v2))~ DM52x ~ DM500HD(v2)~ DM7025(+)
    E1 Box: DM7020 ~ DM7000 ~ DM 5620 ~ DM600 ~ DM500+ ~ DM500 ~ TRIAX 272-S
    Image: OE2.5/OE2.6 Unst./GP4.2 ~ OE2.5 Unst./GP3.3 ~ OE2.2 Unst./GP3.3 ~ OE2.0 Exp./GP3.2 ~ iCVS/GP3 ~ Gemini 4.70
    Sonstiges: Logitech K600 ~ DM Tastatur ~ Box: DM100 ~ Router: Fritz!Box 7590 ~ Wlan Stick: Dream Multimedia ~ Server: ALIX.3D3 ~ BananaPI
    Satelliten: WaveFrontier T90
    23,5°E | 19,2°E | 16.0°E | 13,0°E | 10,0°E | 9,0°E | 7,0°E | 4,9°E | 3.0°E | 1.9°E | 0,8°W | 4,0°W | 5,0°W | 8,0°W | 12,5°W | 15,0°W | 22,0°W | 24,5°W | 30.0°W


    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorial sind für den Einstieg sehr empfehlenswert


  • Ja das stimmt. Das File ist im Dos/Windows Format.

    -->
    openwrt + minicom + screen = 24/7 Bootlog