exit-code eines programmes abfragen

Diskutiere exit-code eines programmes abfragen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Ahoi, ich haenge da gerade an einem (für mich) größerem Problem. Innerhalb eines Scripts starte ich eine Anwendung im Hintergrund. Mein Script...

  1. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Ahoi,
    ich haenge da gerade an einem (für mich) größerem Problem. Innerhalb eines Scripts starte ich eine Anwendung im Hintergrund. Mein Script arbeitet dann noch etwas weiter und wartet dann bis die Anwendung die gestartet wurde beendet ist. Es soll aber dann in Abhängigkeit des exit-codes der (jetzt beendeten) Anwendung eine bestimmte Aktion ausführen. Wie komme ich an den Rückgabewert der Anwendung?

    Beispiel:
    Code:
    #
    # andere aktionen
    #
    ANWENDUNG -v 2 -M -o $TMPDIR >>$LOGFILE 2>&1 &
       #
       # andere aktionen
       #
        f_observe ANWENDUNG;
    #
    # Auswertung des exit-codes von ANWENDUNG
    #
    
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Phate, 07.12.2004
    Zuletzt bearbeitet: 07.12.2004
    Phate

    Phate Frickler/Kellerkommunist

    Dabei seit:
    08.02.2004
    Beiträge:
    261
    Zustimmungen:
    0
    Ort:
    Rheinland
    Rückgabewerte werden in ? gespeichert... also ein "echo $?" direkt nach deiner Anwendung liefert den gewünschten Wert.
     
  4. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    in "$?" steht der rückgabewert des zuletzt ausgeführten Programmes, und das ist bei mir definit nich ANWENDUNG, da im script ja noch weitere Aktionen ausgeführt werden.
     
  5. Phate

    Phate Frickler/Kellerkommunist

    Dabei seit:
    08.02.2004
    Beiträge:
    261
    Zustimmungen:
    0
    Ort:
    Rheinland
    Kann man nicht den Rückgabewert des zuletzt ausgeführten Programmes temporär speichern? Also nachdem du ANWENDUNG ausgeführt hast, ein "return_anwendung=$?"
    Dann hast Du doch Deinen exit code, oder verstehe ich Dich falsch?
     
  6. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Das programm das ich aufrufe ist ein binary auf das ich keinen weiteren einfluss habe. Allerdings muss ich es im Hintergrund starten, da es sonst solange mein script blockiert und das soll es ja nicht.

    Wie meinst Du das mit "return_anwendung=$?" ?
     
  7. Phate

    Phate Frickler/Kellerkommunist

    Dabei seit:
    08.02.2004
    Beiträge:
    261
    Zustimmungen:
    0
    Ort:
    Rheinland
    Da du das Programm im Hintergrund startest, hat sich das erledigt.
    Ich dachte daran, daß Du einfach nach Beendigung des Programms dessen exit-code über $? in eine temporäre Variable schreibst, um damit später weiterzuarbeiten, wenn sich $? längst wieder geändert hat.
     
  8. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    hehe, jo dann wärs ja einfach :)
     
  9. #8 hehejo, 07.12.2004
    Zuletzt bearbeitet: 07.12.2004
    hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    les ich da meinen Namen?

    Ich mach mir auch grad schon ein paar Gedanken, weiß aber auch nicht so recht, wie ich den Exitcode wegspeichere ..

    Kommt man über die PID ran?
    Ich hatte es nämlich mal in einer .xsession, dass ich den WindowManager gestartet habe, mit die PID gemerkt habe und dann am Schluss wait $pid gemacht habe..

    Aber genau weiß ich es leider nicht mehr.
     
  10. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Das gleiche ging mir auch durch den kopf als ich mein geschriebenes gelesen hab.

    Dann denk mal bitte scharf nach
     
  11. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Ich weiß nur noch, dass mir damals im Debianforum.de geholfen wurde.. Aber ich hab da schon alle in Frage kommen den Threads mit meinen Beträgen durchsucht.

    :-(
     
  12. #11 sysdef, 08.12.2004
    Zuletzt bearbeitet: 08.12.2004
    sysdef

    sysdef variable konstante

    Dabei seit:
    08.11.2004
    Beiträge:
    227
    Zustimmungen:
    0
    Ort:
    Albufeira
    lösungsansatz ?

    du könntest "ganz einfach" die variable als $my_app_state exportieren. aber ...
    also lege am anfang deines scriptes einen dateinamen für deinen eindeutigen tmp-datei-namen fest.
    Code:
    temp_file=/tmp/$(date +%s%N)
    in diese schreibst du dann dein exit code
    Code:
    ( /usr/local/bin/my_app; echo $? > $temp_file ) &
    und liest ihn nacher wieder aus.
    Code:
    my_app_state=`cat $temp_file`
    viel erfolg, sys.

    p.s.: ... und das tmp-file löschen nicht vergessen ;)

    edit: tnx an hehejo, der mich auf die höchst interessante aufgabe aufmerksam gem8 hat. ;)
     
  13. #12 sysdef, 08.12.2004
    Zuletzt bearbeitet: 08.12.2004
    sysdef

    sysdef variable konstante

    Dabei seit:
    08.11.2004
    Beiträge:
    227
    Zustimmungen:
    0
    Ort:
    Albufeira
    sry für den doppelpost ... :spam:

    hier die demo: ...

    /bin/test.sh:
    Code:
    #!/bin/bash
    
    temp_file=/tmp/$(date +%s%N)
    
    echo "script starts"
    
    # lange anwendung
     echo "execute my_app ..."
     ( /usr/local/bin/my_app ; echo $? > $temp_file ) &
    
    # blah, blah ...
     for i in $(seq 0 9)
      do
       echo $i
       sleep 1
      done
     echo "... script will end now."
    
    # abfrage des exitcodes
     echo -n "get exitcode: "
    
     my_app_state=`cat $temp_file`
    
     if [ "$my_app_state" == "20" ]
      then
       echo "hey, wtf ... it's exactly 20"
      else
       echo "\$my_app_state = "$my_app_state
      fi
     #delete temp-file
     rm -f $temp_file >/dev/null 2>&1
    
    /usr/local/bin/my_app:
    Code:
    #!/bin/bash
     echo "my_app starts"
     sleep 5
     echo "my_app ends"
     exit 20;
    
    hoffe es ist für dich praktikabel, aber so würde ich es umsetzten,
    sysdef.

    edit: wenn du auf my_app warten willst ...
    Code:
    until [ -f $temp_file ]
     do
      echo -n "warte ... "
      sleep 1
     done
     
  14. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    THX, sysdef. Ich hab gestern schon beobachtet wie den Thread gelesen hattest aber keine Antwort kam, da dachte ich schon "Vergiss es" :).
    Ich werd das später gleich mal ausprobieren.
     
  15. sysdef

    sysdef variable konstante

    Dabei seit:
    08.11.2004
    Beiträge:
    227
    Zustimmungen:
    0
    Ort:
    Albufeira
    hatte gehofft, dass jemand anders was "aus dem hut zaubert" :rolleyes:

    ... vielleicht gehts ja noch viel einfacher.

    sd.
     
  16. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    So, habs jetzt mal eingebaut und siehe da, es geht :) . Mit "until" warten ist klar und auch so drinne. Ausserdem bietet die variante von Dir noch einen entscheidenen Vorteil, nämlich dass $ANWENDUNG auch beendet wird wenn das script abgeschossen wird.

    Hmm, ein Kollege meinte, da $ANWENDUNG ja ein child von $SCRIPT ist, könnte über %n (n = lfd. Nummer der $ANWENDUNG aus $SCRIPT) der exit-code gewonnen werden. Wie man allerdings da drauf zugreift wusste er auch nimmer ;) . Egal, es funzt jetzt und gut ist.

    THX.
     
Thema: exit-code eines programmes abfragen
Besucher kamen mit folgenden Suchen
  1. bash exit code abfragen

    ,
  2. linux return code abfragen

    ,
  3. linux exit code abfragen

    ,
  4. linux exit code,
  5. exit code abfragen,
  6. bash return code abfragen,
  7. bash rückgabewert auswerten,
  8. unix return code abfragen,
  9. bash errorcode auswerten,
  10. bash exit status abfragen,
  11. linux letzteer exit code abfragen,
  12. debian returncode abfragen,
  13. linux return code cp abfragen,
  14. linux exit code ausgeben,
  15. linux exit codes abfragen,
  16. Unix exit status abfragen,
  17. shell script rückgabewert prüfen,
  18. linux return wert abfragen,
  19. bash letzten errorcode,
  20. bash error code,
  21. exit code in der shell abfragen unix,
  22. linux bash exit code auswerten,
  23. linux bash returncode abfragen,
  24. linux return code abfragen variable,
  25. rückgabewert eines programmes auslesen c#
Die Seite wird geladen...

exit-code eines programmes abfragen - Ähnliche Themen

  1. Übersicht exit-codes ?

    Übersicht exit-codes ?: Gibt es irgendwo eine Übersicht der gebräuchlichsten exit-codes ?
  2. kleines curl Problem

    kleines curl Problem: Hallo, ich bin LINUX Frischling und hab mich ein wenig in eien Sackgasse verlaufen... Ich habe vor, die Verzeichnisgröße via curl Befehl in eine...
  3. kleines 'k' am Anfang der OpenSSL Chipers

    kleines 'k' am Anfang der OpenSSL Chipers: Moin, vielleicht kann mir hier jemand die Antwort auf die Frage liefern wofür das kleine k in Ciphers steht, ich habe diese bis dato vorher noch...
  4. Nur den letzten Ordnernamen eines Pfades ausgeben

    Nur den letzten Ordnernamen eines Pfades ausgeben: Hi, gibt es eine einfache Möglichkeit mir nur den letzten Ordnernamen eines Pfades ausgeben zu lassen, wenn als Input der ganze Pfad inkl. Datei...
  5. Rückgabe eines Befehls

    Rückgabe eines Befehls: Hallo zusammen, Ich habe ein Relais das ich über einen UDP Befehl steuern möchte. Ich nutze dafür den Paketsender. Ich sende einen Ascii Befehl...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden