Fehler bei der Abfrage, ob ein Programm läuft

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von daboss, 06.10.2008.

  1. #1 daboss, 06.10.2008
    Zuletzt bearbeitet: 06.10.2008
    daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    [erledigt] Fehler bei der Abfrage, ob ein Programm läuft

    Hallo,

    ich würde gerne ein Programm via Skript starten (oder beenden). Allerdings soll das Programm nur gestartet werden, wenn es noch nicht läuft. Um das zu prüfen, habe ich hier im Forum diesen Threat hier gefunden. Aber das funktioniert nicht wie gewünscht. Es kommt in unten angegebenem Skript immer die Meldung, das das Programm läuft, auch wenn es das nicht tut.

    Das Skript schaut bisher so aus:
    Code:
    #!/bin/bash
    
    if [ "$1" = "" ]; then
        echo "Aufruf: boinc {start|stop}"
    
    elif [ "$1" = "start" ]; then
        if [ "$(ps ax|grep -i "[b]oinc")" ]; then
            echo "Boinc laeuft bereits."
        else
            /home/alex/Downloads/BOINC/run_client -attach_project http://www.worldcommunitygrid.org/ blaKeyNummer >> /home/alex/boincLog.txt &
            echo "Boinc wurde gestartet."
        fi
    
    elif [ "$1" = "stop" ]; then
        killall boinc
    
        echo "Boinc wurde beendet."
    fi
    
    (Vom Skripten hab ich bisher nicht sooo viel Ahnung ;) )

    Wenn ich die if-Bedingung mir im Terminal ausgeben lasse, dann kommt, wenn das Programm nicht läuft, wie erwartet eine leere Zeile zurück:

    Code:
     {-alex-|-gallien-} => [~]
    (09:57:53) "$(ps ax|grep -i "[b]oinc")"
    
    
    andernfalls halt natürlich

    Code:
     {-alex-|-gallien-} => [~]
    (09:57:44) "$(ps ax|grep -i "[b]oinc")"
    bash: 10095 ?        S      0:02 ./boinc -attach_project http://www.worldcommunitygrid.org/ blaKeyNummer
    
    Auch Wolfgangs Version aus dem oben verlinkten Threat (
    Code:
     "$(ps ax|grep -i "boinc")" 
    ) liefert dasselbe Verhalten.
    Kann mir bitte jemad nen Tipp geben, was ich da falsch mache?
     
  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 Aqualung, 06.10.2008
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
    Vllt hilft

    Code:
    if [ ! $(pgrep boinc) ]; then 
       echo "laeuft nicht"
    fi
    
     
  4. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Hm, nein, bringt leider auch nix (im Skript):

    Code:
     {-alex-|-gallien-} => [~]
    (10:30:31) bin/boinc.sh start
    Boinc laeuft bereits.
    
    Im Terminal komischerweise aber scheints zu passen:

    Code:
     {-alex-|-gallien-} => [~]
    (10:27:49) if [ ! $(pgrep boinc) ]; then echo "why??"; else echo "fuck u"; fi
    why??
    
    Irgendwie versteh ich das nicht :(
     
  5. #4 Aqualung, 06.10.2008
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
    Mach mal debugging-Ausgaben vor Deinen if-Block:

    Code:
    echo "pgrep boinc=xxx$(pgrep boinc)yyy"
     
  6. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Haha, Witz komm raus! Manchmal könnt ich mich....
    Naja, jetzt funktionierts, danke für deine Mühe, hab den Fehler gefunden.

    ...wenn das Script boinc.sh heißt, und ich dann nach oinc greppe, ist natürlich ein boinc in der Prozessliste, nämlich das Skript selbst... siehe
    Code:
     {-alex-|-gallien-} => [~]
    (10:48:56) boinc.sh start
    10862 pts/1    S+     0:01 gedit bin/boinc.sh
    10905 pts/0    S+     0:00 /bin/bash /home/alex/bin/boinc.sh start
    pgrep boinc=10905
    Boinc laeuft bereits.
     {-alex-|-gallien-} => [~]
    (10:49:41) cp bin/boinc.sh blauba.sh
     {-alex-|-gallien-} => [~]
    (10:50:25) ./blauba.sh start
    10862 pts/1    S+     0:01 gedit bin/boinc.sh
    pgrep boinc=
    Boinc wurde gestartet.
     {-alex-|-gallien-} => [~]
    (10:50:30) ./blauba.sh start
    10862 pts/1    S+     0:01 gedit bin/boinc.sh
    10931 pts/0    S      0:00 ./boinc -attach_project http://www.worldcommunitygrid.org/ blaKeyId
    pgrep boinc=10931
    Boinc laeuft bereits.
    
    Das Thema sollte sich dann damit erledigt haben... Eine Bissspur mehr in der Schreibtischkante...
     
  7. NoXqs

    NoXqs Routinier

    Dabei seit:
    07.05.2007
    Beiträge:
    420
    Zustimmungen:
    0
    Ort:
    Bremen
    Ich finde case-anweisungen ja eleganter.

    Code:
    #!/bin/bash
    
    if [ "$1" = "" ]; then
        echo "Aufruf: boinc {start|stop}"
        exit 99
    fi
    
    case $1 in
    
    start)
               if [  "$(ps ax|grep -i "[b]oinc")" ]
               then
               echo "Boinc laeuft bereits."
               else
               /home/alex/Downloads/BOINC/run_client -attach_project http://www.worldcommunitygrid.org/ blaKeyNummer >> /home/alex/boincLog.txt 
               echo "Boinc wurde gestartet."
               fi
               ;;
    
    stop)
               killall boinc
               echo "Boinc wurde beendet."
               ;;
    
    *)        echo "Aufruf: boinc {start|stop}"
               exit 99
               ;;
    esac 
    
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Fehler bei der Abfrage, ob ein Programm läuft

Die Seite wird geladen...

Fehler bei der Abfrage, ob ein Programm läuft - Ähnliche Themen

  1. Shell if-Abfrage mit equal or greater wirft Fehlermeldung unary operator expected

    Shell if-Abfrage mit equal or greater wirft Fehlermeldung unary operator expected: Hallo zusammen, ich habe ein Problem mit einem selbstgebauten Script. Edit 10:26: Pardon, es handelt sich um ein HP-UX Release B.11.23 U...
  2. Wo ist der Denkfehler - IF-Abfragen

    Wo ist der Denkfehler - IF-Abfragen: Hallo folgendes Skript is gegeben: ---------- #/bin/sh abfrage=$(ps -A | grep -o "[m]ysqld" | head -n1) read -p "MySql Daten in...
  3. Terminal Fehlermeldung

    Terminal Fehlermeldung: Hola, mir ist aufgefallen das ständig ein Fehler erscheint sobald ich einen Terminal öffne. Hat zwar keine Auswirkung auf die Arbeit damit sieht...
  4. LibreOffice 5.1.1 korrigiert Fehler

    LibreOffice 5.1.1 korrigiert Fehler: Das LibreOffice-Projekt hat die Verfügbarkeit der Version 5.1.1 der freien Office-Suite bekannt gegeben. In diesem planmäßigen Update werden...
  5. Fehler in glibc gefährdet zahlreiche Systeme

    Fehler in glibc gefährdet zahlreiche Systeme: Sicherheitsforscher haben eine Sicherheitslücke in der glibc-Bibliothek entdeckt, die sich von externen Angreifern über das Netzwerk ausnutzen...