GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was sind Bash-Exit-Codes in Linux

Was ist ein Exit-Code

Jedes Skript, jeder Befehl oder jede Binärdatei wird mit einem Rückgabecode beendet. Sie können diesen Wert in der speziellen Variable $? sehen . Rückgabecodes sind numerisch und auf Werte zwischen 0 und 255 beschränkt, da eine 8-Bit-Ganzzahl ohne Vorzeichen verwendet wird. Wenn Sie einen Wert von -1 verwenden, wird 255 zurückgegeben. Jede Ausführung endet mit einem Exit-Code, ob erfolgreich oder nicht, mit einer Fehlermeldung oder im Hintergrund. Zum Beispiel:

$ date ; echo $?
Sat Jan 18 08:06:07 IST 2020
0

Wie Sie sehen können, ist der Exit-Code 0, da der Befehl ohne Probleme ausgeführt wurde. Versuchen wir es jetzt:

$ wrngcmd ; echo $?
-bash: wrngcmd: command not found
127

Es ist ein Befehl, der nicht gefunden wurde, da wir nur eine bedeutungslose Reihe von Zeichen eingegeben haben.

Reservierte Bash-Exit-Codes

So ähnlich wie der Exit-Code „0“, der den Erfolg des Befehls anzeigt, hat Bash einige reservierte Exit-Codes für verschiedene Situationen. Wenn Sie also einen Exit-Befehl in einem Skript verwenden und einen Exit-Code angeben müssen, verwenden Sie diese reservierten Exit-Codes idealerweise nicht, da sie zu widersprüchlichen Ergebnissen führen können.

Ausgangscodenummer Bedeutung Beispiel Kommentare
1 Catchall für allgemeine Fehler lassen Sie „var1 =1/0“ Verschiedene Fehler, wie „Teile durch Null“ und andere unzulässige Operationen
2 Missbrauch von Shell-Builts empty_function() {} Schlüsselwort oder Befehl fehlt
126 Aufgerufener Befehl kann nicht ausgeführt werden /dev/null Berechtigungsproblem oder Befehl ist nicht ausführbar
127 “Befehl nicht gefunden” illegaler_Befehl Mögliches Problem mit $PATH oder einem Tippfehler
128 Ungültiges Argument zum Beenden Exit 3.14159 exit akzeptiert nur ganzzahlige Argumente im Bereich von 0 – 255 (siehe erste Fußnote)
128 +n Schwerwiegendes Fehlersignal „n“ kill -9 $PPID des Skripts $? gibt 137 (128 + 9) zurück
130 Skript beendet durch Strg-C Strg-C Control-C ist fatales Fehlersignal 2, (130 =128 + 2, siehe oben)
255* Exit-Status außerhalb des Bereichs Ausgang -1 exit akzeptiert nur ganzzahlige Argumente im Bereich von 0 – 255

Lassen Sie uns den Exit-Code „128 +n“ anhand eines Beispiels verstehen. Führen Sie die Endlosschleife wie unten gezeigt aus:

#!/bin/bash    
while true; do    
echo ${$}    
done

Wenn Sie dieses Skript ausführen, wird es die gleiche PID auf unbestimmte Zeit drucken, bis Sie es beenden oder „STRG + C“ ausführen. Versuchen Sie es mit „STRG+C“ und sehen Sie, wie der Exit-Code lautet.

# sh test.sh
....
2582
2582
2582
2582
2582
2582
^C
geeklab$ echo $?
130

Wie Sie sehen können, ist der Exit-Code „128+2“, d. h. 130. Wenn wir das Skript mit „kill -9“ beenden, sollte der Exit-Code „128+9“, d. h. 137, lauten. Sehen wir uns auch dafür ein Beispiel an:

# sh test.sh
....
2582
2582
2582
...
# kill -9 [pid_of_script]
....
2602
2602
Killed: 9
geeklab$ echo $?
137


Linux
  1. Wie kann ich Exit-Codes für Anwendungen nachschlagen?

  2. Was sind die Worttrennzeichen von Readline?

  3. Was sind die Hauptunterschiede zwischen Bsd und Gnu/Linux Userland?

  4. Was sind DNS-Nameserver-Typen in Linux?

  5. Gibt es unter Linux standardmäßige Exit-Statuscodes?

Bash Exit-Befehl und Exit-Codes

Was sind Inodes unter Linux?

Was sind schmutzige Seiten in Linux

Was sind Sparse-Dateien in Linux?

Was ist der Zweck des Linux-Home-Partitionscodes 8302?

Welche Videobearbeitungsanwendungen sind unter Linux verfügbar?