exit-code eines programmes abfragen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Cyber, 07.12.2004.

  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

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    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. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. 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.
     
  17. 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. exit werte unix

    ,
  2. exitcode von shells abfragen

    ,
  3. bash exit code abfragen

    ,
  4. shell exit code abfragen,
  5. java returncode in variable speichern,
  6. bash programme im hintergrund starten auf rückgabewert warten,
  7. bash exit codes abfragen,
  8. linux exit status abfragen
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. Mit Live-CD Linux-Tauglichkeit eines Notebooks feststellen

    Mit Live-CD Linux-Tauglichkeit eines Notebooks feststellen: Hallo zusammen, eine Bekannte war mit dem Zwangsupdate auf Windows 10 bei Ihrem Notebook (Toshiba Satellite mit AMD-Prozessor und AMD Radeon...
  3. Artikel: Modifizieren eines Biblatex-Stils

    Artikel: Modifizieren eines Biblatex-Stils: Dieser Artikel richtet sich an Nutzer von LaTeX, die sich erstmals damit konfrontiert sehen, besondere Vorgaben bei der Bibliografie umsetzen zu...
  4. Linux-Varianten eines fortschrittlichen Trojaners für Windows entdeckt

    Linux-Varianten eines fortschrittlichen Trojaners für Windows entdeckt: Die Linux-Varianten basieren auf dem Trojaner Turla, den Forscher der Sicherheitsunternehmen Kaspersky Labs und Symantec im Jahresverlauf...
  5. Suche kleines Live OS

    Suche kleines Live OS: Hallo, Ich suche ein kleines Live OS um zu sehen ob der Prozessor hochtaktet. Wie ist das zu realisieren? Hintergrund: Bei einem Dell Vostro...