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.
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 Programme2Falsche Verwendung, etwa Syntaxfehler oder ungültige Option bei eingebauten Befehlen der Bash124Zeitlimit von timeout erreicht (GNU coreutils)126Befehl gefunden, aber nicht ausführbar, meist fehlt das AusführungsrechtPrüfen: chmod +x skript.sh127Befehl nicht gefunden: Tippfehler, Programm nicht installiert oder nicht im PATHPrüfen: command -v befehl128 + nProzess wurde durch Signal n beendet, zum Beispiel 130, 137 oder 143130Abbruch mit Strg+C (SIGINT, 128 + 2)134Abbruch durch abort() (SIGABRT, 128 + 6), etwa nach fehlgeschlagener Prüfung137Hart beendet (SIGKILL, 128 + 9): OOM-Killer, kill -9 oder docker kill139Speicherzugriffsfehler (SIGSEGV, 128 + 11), Segmentation fault141SIGPIPE (128 + 13): Leser der Pipe war schon fertig, häufig mit set -o pipefail und head143Normal beendet auf Anfrage (SIGTERM, 128 + 15), etwa durch docker stop oder systemctl stop255Exit-Status außerhalb des Bereichs, etwa exit -1; bei ssh: Verbindungs- oder Anmeldefehlerecho $?Exit-Code des zuletzt ausgeführten Befehls anzeigenecho "${PIPESTATUS[@]}"Bash: Exit-Codes aller Befehle der letzten Pipelineset -euo pipefailSkript beim ersten Fehler beenden, auch bei Fehlern mitten in Pipelinesbefehl || echo "Fehler: $?"Nur bei Rückgabewert ungleich 0 reagierenexit 3Skript mit eigenem Exit-Code beenden; erlaubt sind 0 bis 255sysexits.h (BSD, Mailserver, CLI-Werkzeuge)
64EX_USAGE: Befehl falsch aufgerufen, etwa falsche Argumente65EX_DATAERR: Eingabedaten fehlerhaft66EX_NOINPUT: Eingabedatei fehlt oder ist nicht lesbar67EX_NOUSER: Benutzer unbekannt (zum Beispiel Mail-Empfänger)68EX_NOHOST: Rechnername unbekannt69EX_UNAVAILABLE: Dienst nicht verfügbar70EX_SOFTWARE: interner Softwarefehler71EX_OSERR: Fehler des Betriebssystems, etwa fork nicht möglich72EX_OSFILE: Systemdatei fehlt oder ist fehlerhaft73EX_CANTCREAT: Ausgabedatei kann nicht angelegt werden74EX_IOERR: Ein-/Ausgabefehler75EX_TEMPFAIL: vorübergehender Fehler, später erneut versuchen76EX_PROTOCOL: Fehler im Protokoll der Gegenstelle77EX_NOPERM: keine Berechtigung78EX_CONFIG: KonfigurationsfehlerDocker und Kubernetes
125docker run: Fehler des Docker-Daemons selbst, etwa unbekannte Option oder Name schon vergeben126docker run: Befehl im Container kann nicht ausgeführt werden127docker run: Befehl im Container nicht gefunden, oft falscher ENTRYPOINT oder fehlende Shell im Image137 (OOMKilled)Container durch SIGKILL beendet; prüfen, ob das Speicherlimit erreicht wurdePrüfen: docker inspect --format '{{.State.OOMKilled}}' NAME143Container hat SIGTERM erhalten und sich beendet, normal bei docker stop oder beim Herunterfahren eines PodsExit Code in kubectlGrund und Exit-Code des letzten Container-Laufs unter „Last State“ anzeigenPrüfen: kubectl describe pod PODWindows
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 Administratorrechte9009cmd: Befehl oder Programm nicht gefunden1603msiexec: schwerwiegender Fehler bei der Installation1618msiexec: eine andere Installation läuft bereits1641msiexec: Installation erfolgreich, Neustart wurde eingeleitet3010msiexec: Installation erfolgreich, Neustart erforderlich0xC0000005 (-1073741819)STATUS_ACCESS_VIOLATION: Zugriffsverletzung, das Programm ist abgestürzt0xC000013A (-1073741510)STATUS_CONTROL_C_EXIT: mit Strg+C oder durch Schließen der Konsole beendet0xC00000FD (-1073741571)STATUS_STACK_OVERFLOW: Stapelüberlauf, oft endlose Rekursion0xC0000135 (-1073741515)STATUS_DLL_NOT_FOUND: benötigte DLL fehlt, etwa eine Visual-C++-Laufzeitbibliothek0xC0000142 (-1073741502)STATUS_DLL_INIT_FAILED: eine DLL konnte nicht initialisiert werden0xC0000374 (-1073740940)STATUS_HEAP_CORRUPTION: beschädigter Heap-Speicher0xC0000409 (-1073740791)STATUS_STACK_BUFFER_OVERRUN: Sicherheitsprüfung hat einen Pufferüberlauf erkannt oder das Programm wurde per Fast-Fail beendetif errorlevel 1Batch: trifft zu, wenn der Exit-Code 1 oder größer istexit /b 3Batch-Datei mit eigenem Exit-Code verlassen$LASTEXITCODEPowerShell: Exit-Code des zuletzt gestarteten externen ProgrammsBekannte 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 Fehlertest / [ ]: 0 / 10 Bedingung wahr, 1 falschgit: 128Schwerer Fehler („fatal: …“), etwa kein Repository oder unbekannter Branchgit diff --exit-code: 11 bedeutet: Es gibt Unterschiede; praktisch für CI-Prüfungenssh: 255Fehler von ssh selbst; sonst gibt ssh den Exit-Code des entfernten Befehls weitercurl: 6Rechnername konnte nicht aufgelöst werden (DNS)curl: 7Verbindung zum Server fehlgeschlagencurl: 22HTTP-Status ab 400, nur mit -f bzw. --failcurl: 28Zeitlimit überschrittencurl: 35Fehler beim TLS-Handshakecurl: 60Zertifikat des Servers konnte nicht geprüft werdenrsync: 23Teilweise übertragen, bei einigen Dateien gab es Fehlerrsync: 24Teilweise übertragen, Quelldateien sind während der Übertragung verschwundenrsync: 30Zeitüberschreitung beim Senden oder Empfangenrobocopy: 0Nichts kopiert, Quelle und Ziel waren bereits gleichrobocopy: 1Dateien erfolgreich kopiertrobocopy: 2 / 4Zusätzliche Dateien im Ziel (2) bzw. abweichende Dateien (4), kein Fehlerrobocopy: 8 / 16Einige Dateien nicht kopiert (8) bzw. schwerer Fehler (16). Die Werte werden addiert; erst ab 8 liegt ein Fehler vorsystemctl status: 3Dienst läuft nicht; 0 bedeutet aktiv, 4 unbekannte UnitKein Eintrag gefunden. Versuchen Sie einen anderen Begriff oder wählen Sie „Alle Gruppen“.
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
- Tragen Sie den Code aus Ihrem Log in das Feld „Exit-Code“ ein, dezimal (
137,-1073741819) oder hexadezimal (0xC0000005). - Lesen Sie die Deutung: Shell-Bedeutung, Signal bei Werten über 128 und passende Windows-Statuscodes.
- Suchen Sie in der Liste nach dem Programm, etwa „rsync“ oder „robocopy“, um dessen eigene Codes zu sehen.
- 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 killerkennen. - Absturzcodes wie
-1073741819einer Windows-Anwendung als Zugriffsverletzung0xC0000005lesen. - In Backup-Skripten richtig unterscheiden, wann robocopy oder rsync wirklich einen Fehler melden.
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%.
Das könnte auch helfen
HTTP-Statuscodes
Alle gängigen HTTP-Statuscodes von 100 bis 511 mit Bedeutung, typischer Ursache und Suche.
ÖffnenHTTP-Header-Referenz
Wichtige Anfrage- und Antwort-Header mit Bedeutung und Beispiel, durchsuchbar.
ÖffnenMIME-Typen
Über 150 MIME-Typen nachschlagen: Dateiendung zu Content-Type und umgekehrt.
ÖffnenGit-Befehle
Git-Spickzettel: die wichtigsten Befehle nach Aufgaben gruppiert, durchsuchbar und kopierbar.
ÖffnenBash-Befehle
Bash- und Linux-Befehle für Dateien, Text, Prozesse und Netzwerk, mit Suche und Kopieren.
ÖffnenPort-Liste
Bekannte TCP- und UDP-Ports von 20 bis 51820 mit Dienst und Hinweis, durchsuchbar.
Öffnen