Exit-Codes: Bedeutung nachschlagen und deuten

Exit-Codes von Shell, Docker, Windows und bekannten Programmen nachschlagen: Was bedeuten 1, 127, 137 oder 0xC0000005? Code eingeben, Deutung lesen, Prüfbefehl kopieren.

Dezimal, negativ oder hexadezimal mit 0x

80 Einträge

Shell (bash, sh, zsh)

0Erfolg. Alles andere gilt in der Shell als Fehler.Prüfen: echo $?
1Allgemeiner Fehler, die häufigste Fehlerkennung vieler Programme
2Falsche Verwendung, etwa Syntaxfehler oder ungültige Option bei eingebauten Befehlen der Bash
124Zeitlimit von timeout erreicht (GNU coreutils)
126Befehl gefunden, aber nicht ausführbar, meist fehlt das AusführungsrechtPrüfen: chmod +x skript.sh
127Befehl nicht gefunden: Tippfehler, Programm nicht installiert oder nicht im PATHPrüfen: command -v befehl
128 + nProzess wurde durch Signal n beendet, zum Beispiel 130, 137 oder 143
130Abbruch mit Strg+C (SIGINT, 128 + 2)
134Abbruch durch abort() (SIGABRT, 128 + 6), etwa nach fehlgeschlagener Prüfung
137Hart beendet (SIGKILL, 128 + 9): OOM-Killer, kill -9 oder docker kill
139Speicherzugriffsfehler (SIGSEGV, 128 + 11), Segmentation fault
141SIGPIPE (128 + 13): Leser der Pipe war schon fertig, häufig mit set -o pipefail und head
143Normal beendet auf Anfrage (SIGTERM, 128 + 15), etwa durch docker stop oder systemctl stop
255Exit-Status außerhalb des Bereichs, etwa exit -1; bei ssh: Verbindungs- oder Anmeldefehler
echo $?Exit-Code des zuletzt ausgeführten Befehls anzeigen
echo "${PIPESTATUS[@]}"Bash: Exit-Codes aller Befehle der letzten Pipeline
set -euo pipefailSkript beim ersten Fehler beenden, auch bei Fehlern mitten in Pipelines
befehl || echo "Fehler: $?"Nur bei Rückgabewert ungleich 0 reagieren
exit 3Skript mit eigenem Exit-Code beenden; erlaubt sind 0 bis 255

sysexits.h (BSD, Mailserver, CLI-Werkzeuge)

64EX_USAGE: Befehl falsch aufgerufen, etwa falsche Argumente
65EX_DATAERR: Eingabedaten fehlerhaft
66EX_NOINPUT: Eingabedatei fehlt oder ist nicht lesbar
67EX_NOUSER: Benutzer unbekannt (zum Beispiel Mail-Empfänger)
68EX_NOHOST: Rechnername unbekannt
69EX_UNAVAILABLE: Dienst nicht verfügbar
70EX_SOFTWARE: interner Softwarefehler
71EX_OSERR: Fehler des Betriebssystems, etwa fork nicht möglich
72EX_OSFILE: Systemdatei fehlt oder ist fehlerhaft
73EX_CANTCREAT: Ausgabedatei kann nicht angelegt werden
74EX_IOERR: Ein-/Ausgabefehler
75EX_TEMPFAIL: vorübergehender Fehler, später erneut versuchen
76EX_PROTOCOL: Fehler im Protokoll der Gegenstelle
77EX_NOPERM: keine Berechtigung
78EX_CONFIG: Konfigurationsfehler

Docker und Kubernetes

125docker run: Fehler des Docker-Daemons selbst, etwa unbekannte Option oder Name schon vergeben
126docker run: Befehl im Container kann nicht ausgeführt werden
127docker run: Befehl im Container nicht gefunden, oft falscher ENTRYPOINT oder fehlende Shell im Image
137 (OOMKilled)Container durch SIGKILL beendet; prüfen, ob das Speicherlimit erreicht wurdePrüfen: docker inspect --format '{{.State.OOMKilled}}' NAME
143Container hat SIGTERM erhalten und sich beendet, normal bei docker stop oder beim Herunterfahren eines Pods
Exit Code in kubectlGrund und Exit-Code des letzten Container-Laufs unter „Last State“ anzeigenPrüfen: kubectl describe pod POD

Windows

0ErfolgPrüfen: echo %ERRORLEVEL%
1Allgemeiner Fehler bzw. „Unzulässige Funktion“ (ERROR_INVALID_FUNCTION)
2Datei nicht gefunden (ERROR_FILE_NOT_FOUND)
3Pfad nicht gefunden (ERROR_PATH_NOT_FOUND)
5Zugriff verweigert (ERROR_ACCESS_DENIED), oft fehlen Administratorrechte
9009cmd: Befehl oder Programm nicht gefunden
1603msiexec: schwerwiegender Fehler bei der Installation
1618msiexec: eine andere Installation läuft bereits
1641msiexec: Installation erfolgreich, Neustart wurde eingeleitet
3010msiexec: Installation erfolgreich, Neustart erforderlich
0xC0000005 (-1073741819)STATUS_ACCESS_VIOLATION: Zugriffsverletzung, das Programm ist abgestürzt
0xC000013A (-1073741510)STATUS_CONTROL_C_EXIT: mit Strg+C oder durch Schließen der Konsole beendet
0xC00000FD (-1073741571)STATUS_STACK_OVERFLOW: Stapelüberlauf, oft endlose Rekursion
0xC0000135 (-1073741515)STATUS_DLL_NOT_FOUND: benötigte DLL fehlt, etwa eine Visual-C++-Laufzeitbibliothek
0xC0000142 (-1073741502)STATUS_DLL_INIT_FAILED: eine DLL konnte nicht initialisiert werden
0xC0000374 (-1073740940)STATUS_HEAP_CORRUPTION: beschädigter Heap-Speicher
0xC0000409 (-1073740791)STATUS_STACK_BUFFER_OVERRUN: Sicherheitsprüfung hat einen Pufferüberlauf erkannt oder das Programm wurde per Fast-Fail beendet
if errorlevel 1Batch: trifft zu, wenn der Exit-Code 1 oder größer ist
exit /b 3Batch-Datei mit eigenem Exit-Code verlassen
$LASTEXITCODEPowerShell: Exit-Code des zuletzt gestarteten externen Programms

Bekannte Programme

grep: 0 / 1 / 20 Treffer gefunden, 1 kein Treffer, 2 Fehler (etwa Datei fehlt)
diff: 0 / 1 / 20 Dateien gleich, 1 Unterschiede gefunden, 2 Fehler
test / [ ]: 0 / 10 Bedingung wahr, 1 falsch
git: 128Schwerer Fehler („fatal: …“), etwa kein Repository oder unbekannter Branch
git diff --exit-code: 11 bedeutet: Es gibt Unterschiede; praktisch für CI-Prüfungen
ssh: 255Fehler von ssh selbst; sonst gibt ssh den Exit-Code des entfernten Befehls weiter
curl: 6Rechnername konnte nicht aufgelöst werden (DNS)
curl: 7Verbindung zum Server fehlgeschlagen
curl: 22HTTP-Status ab 400, nur mit -f bzw. --fail
curl: 28Zeitlimit überschritten
curl: 35Fehler beim TLS-Handshake
curl: 60Zertifikat des Servers konnte nicht geprüft werden
rsync: 23Teilweise übertragen, bei einigen Dateien gab es Fehler
rsync: 24Teilweise übertragen, Quelldateien sind während der Übertragung verschwunden
rsync: 30Zeitüberschreitung beim Senden oder Empfangen
robocopy: 0Nichts kopiert, Quelle und Ziel waren bereits gleich
robocopy: 1Dateien erfolgreich kopiert
robocopy: 2 / 4Zusätzliche Dateien im Ziel (2) bzw. abweichende Dateien (4), kein Fehler
robocopy: 8 / 16Einige Dateien nicht kopiert (8) bzw. schwerer Fehler (16). Die Werte werden addiert; erst ab 8 liegt ein Fehler vor
systemctl status: 3Dienst läuft nicht; 0 bedeutet aktiv, 4 unbekannte Unit

Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

Exit-Codes richtig lesen

Diese Übersicht sammelt 80 Exit-Codes und Hilfsbefehle: die Rückgabewerte der Shell, die Signal-Codes ab 128, die Werte aus sysexits, Codes von Docker und Kubernetes, Windows-Statuscodes wie 0xC0000005 und die eigenen Codes bekannter Programme wie grep, curl, rsync und robocopy. Im Feld oben können Sie einen beliebigen Code eingeben, auch negative Werte aus Windows-Logs.

Jedes Programm meldet beim Beenden einen Rückgabewert an den aufrufenden Prozess. 0 bedeutet Erfolg, jeder andere Wert einen Fehler oder einen besonderen Zustand. Unter Linux und macOS sind nur 8 Bit erlaubt, also 0 bis 255. Exit Code 127 heißt „Befehl nicht gefunden“, Exit Code 137 ist 128 + 9 und damit ein Abbruch durch SIGKILL, häufig weil ein Container sein Speicherlimit erreicht hat. Welche Nummer zu welchem Signal gehört, zeigt die Liste der Linux-Signale.

Unter Windows steht der Wert in der Eingabeaufforderung in %ERRORLEVEL% und in PowerShell in $LASTEXITCODE. Hier sind 32-Bit-Werte üblich; Abstürze zeigen sich als NTSTATUS-Code, der in Logs oft als negative Dezimalzahl erscheint. Beachten Sie, dass viele Programme eigene Bedeutungen festlegen: Bei grep ist 1 kein Fehler, sondern „nichts gefunden“, und robocopy meldet bei Erfolg 1. Im Zweifel hilft die Hilfeseite des Programms (man programm bzw. programm /?).

Anleitung: Exit-Codes in 4 Schritten

  1. Tragen Sie den Code aus Ihrem Log in das Feld „Exit-Code“ ein, dezimal (137, -1073741819) oder hexadezimal (0xC0000005).
  2. Lesen Sie die Deutung: Shell-Bedeutung, Signal bei Werten über 128 und passende Windows-Statuscodes.
  3. Suchen Sie in der Liste nach dem Programm, etwa „rsync“ oder „robocopy“, um dessen eigene Codes zu sehen.
  4. Kopieren Sie die Zeile oder den Prüfbefehl wie echo $? mit „Kopieren“.

Typische Anwendungsfälle

  • Einen fehlgeschlagenen Schritt in GitHub Actions, GitLab CI oder Jenkins anhand des Exit-Codes einordnen.
  • Einen Container mit Exit-Code 137 als OOM-Kill oder docker kill erkennen.
  • Absturzcodes wie -1073741819 einer Windows-Anwendung als Zugriffsverletzung 0xC0000005 lesen.
  • In Backup-Skripten richtig unterscheiden, wann robocopy oder rsync wirklich einen Fehler melden.
Fragen

Häufige Fragen

Was bedeutet Exit Code 137?

137 ist 128 + 9: Der Prozess wurde durch SIGKILL beendet. In Docker und Kubernetes steckt meist der OOM-Killer dahinter, weil das Speicherlimit erreicht wurde; prüfen Sie das mit docker inspect bzw. kubectl describe pod. Auch kill -9 und docker kill führen zu 137.

Was bedeutet Exit Code 127?

Die Shell hat den Befehl nicht gefunden. Ursachen sind Tippfehler, ein nicht installiertes Programm oder ein fehlender Eintrag im PATH. In Docker-Images fehlt oft die Shell, etwa bash in Alpine-Images.

Was ist ERRORLEVEL?

ERRORLEVEL ist der Exit-Code in der Windows-Eingabeaufforderung. echo %ERRORLEVEL% zeigt ihn an. Achtung: if errorlevel 1 trifft für 1 und alle größeren Werte zu.

Was sind sysexits?

Die Datei sysexits.h aus BSD legt Exit-Codes von 64 bis 78 für typische Fehlerarten fest, etwa 64 für falsche Bedienung oder 75 für vorübergehende Fehler. Mailserver wie Postfix und viele Kommandozeilenwerkzeuge nutzen sie, verpflichtend sind sie nicht.

Warum ist der Exit-Code nie größer als 255?

Unter Linux und macOS gibt ein Prozess nur die unteren 8 Bit seines Rückgabewerts an den Elternprozess weiter. exit 256 ergibt deshalb 0 und exit -1 ergibt 255. Windows kennt dagegen 32-Bit-Codes.

Wie gebe ich in PowerShell den letzten Exit-Code aus?

Mit $LASTEXITCODE für das zuletzt gestartete externe Programm. $? liefert in PowerShell nur True oder False. In der klassischen Eingabeaufforderung steht der Wert in %ERRORLEVEL%.

Weitere Werkzeuge

Das könnte auch helfen

Alle 558 Werkzeuge