Wie man Linux-Exit-Codes zur Fehlersuche in Ihrem Linux-System verwendet

Exit-Codes sind numerische Rückgabewerte von Programmen, die bei der Fehlersuche helfen, indem sie den Status der Programmausführung anzeigen und die Diagnose vereinfachen.

Exit-Codes, auch bekannt als Rückgabewerte oder Beendigungsstatus, sind numerische Signale, die ein Programm, ein Befehl oder ein Skript an das Betriebssystem (oder den aufrufenden Prozess) zurücksendet, wenn es seine Ausführung beendet. Sie müssen nicht durch möglicherweise lange Protokolldateien stöbern, um eine Fehlfunktion zu diagnostizieren – ein Exit-Code liefert oft einen schnellen Hinweis auf die Art des Problems.

Die allgemein akzeptierte Konvention ist, dass ein Programm beim erfolgreichen Abschluss einen Exit-Code von 0 zurückgibt. Jede andere Zahl, typischerweise im Bereich von 1 bis 255, weist darauf hin, dass etwas schiefgegangen ist.

Der einfachste Weg, den Exit-Code des zuletzt ausgeführten Vordergrundbefehls in Unix-ähnlichen Shells (wie Bash oder Zsh) zu überprüfen, besteht darin, die spezielle Shell-Variable $? zu inspizieren. Führen Sie beispielsweise zuerst einen beliebigen Befehl aus und überprüfen Sie anschließend seinen Exit-Code:

ls /nonexistent_directory
echo $?

Der echo $? Befehl zeigt den numerischen Exit-Code an, der in der $? Variable gespeichert ist. Wenn Sie 0 sehen, bedeutet das, dass der vorherige Befehl erfolgreich abgeschlossen wurde. Ein nicht nullwertiger Wert wie 1, 2 oder 127 weist auf einen Fehler hin, und die spezifische Zahl gibt einen Hinweis auf die Art des Problems – möglicherweise eine fehlende Datei, ein nicht vorhandenes Verzeichnis oder unzureichende Berechtigungen.

Debugging Ihres Skripts mit Exit-Codes

Exit-Codes sind besonders nützlich, wenn Sie Shell-Skripte schreiben. Sie helfen Ihrem Skript festzustellen, ob etwas richtig oder falsch gelaufen ist, und ermöglichen es ihm, zu entscheiden, was als Nächstes zu tun ist.

Hier ist ein einfaches Beispiel, das eine Datei in einen Sicherungsordner kopiert und meldet, ob die Kopie erfolgreich war:

#!/bin/bash
# Versuchen, die Datei zu kopieren
cp important_file.txt backup/

# Überprüfen, ob die Kopie erfolgreich war, indem der Exit-Code verwendet wird ($? hält den Exit-Code des letzten Befehls)
if [ $? -eq 0 ]; then
 echo "Backup erfolgreich!"
else
 echo "Backup fehlgeschlagen mit Exit-Code $?"
 exit 1 # Skript mit einem Fehlercode beenden, um anzuzeigen, dass etwas schiefgegangen ist.
fi

Wenn der cp Befehl ausgeführt wird, gibt er einen Exit-Code zurück. Ein Exit-Code von 0 bedeutet, dass alles reibungslos verlief. Ist der Code nicht 0, ist etwas schiefgelaufen – und das Skript gibt eine Fehlermeldung aus und beendet sich mit dem Code 1.

Eigene Exit-Codes festlegen

Zusätzlich zur Überprüfung der Exit-Codes von Befehlen können Sie eigene Exit-Codes definieren, um verschiedene Arten von Fehlern anzuzeigen. Diese Praxis macht Ihre Skripte informativer und ermöglicht es jedem, der sie verwendet, genau zu verstehen, welche Art von Problem aufgetreten ist.

Betrachten Sie dieses Skript:

#!/bin/bash
# Überprüfen, ob ein Argument (Dateiname) bereitgestellt wurde.
if [ -z "$1" ]; then
 echo "Verwendung: $0 <Dateiname>"
 exit 1 # Exit-Code 1 zeigt an, dass kein Argument bereitgestellt wurde.
fi

# Überprüfen, ob die als erstes Argument angegebene Datei existiert.
if [ ! -f "$1" ]; then
 echo "Fehler: Datei nicht gefunden"
 exit 2 # Benutzerdefinierter Exit-Code 2 zeigt an, dass die Datei nicht gefunden wurde.
fi

Wenn jemand Ihr Skript ausführt und es fehlschlägt, kann er sich auf den Exit-Code beziehen, um den genauen Fehler zu bestimmen. In diesem Beispiel signalisiert der Exit-Code 1, dass der Benutzer kein erforderlich Argument bereitgestellt hat, während der Exit-Code 2 ausdrücklich darauf hinweist, dass die Datei nicht gefunden wurde. Dieser strukturierte Ansatz ist besonders nützlich, wenn Ihr Skript Teil eines größeren Systems ist oder wenn ein anderes Skript von seiner Ausgabe abhängt.

Liste häufiger Exit-Codes

Obwohl verschiedene Programme ihre eigenen Exit-Codes definieren können, gibt es einige allgemeine Muster, die Sie bei vielen Befehlszeilen-Tools – insbesondere in Linux- und Unix-ähnlichen Systemen – sehen werden. Hier sind einige der häufigsten:

  • 0: Alles gut! Das Programm lief ohne Probleme.
  • 1: Etwas ging schief, aber der Fehler ist nicht spezifisch. Dies ist wie der Auffangbegriff für Exit-Codes.
  • 2: Fehlgebrauch von Shell Builtins. Dies kann auftreten, wenn Sie einen Befehl falsch verwenden, z. B. erforderliche Parameter vergessen.
  • 126: Der Befehl existiert, aber Sie haben keine Berechtigung, ihn auszuführen.
  • 127: Befehl nicht gefunden. Das bedeutet, dass der Befehl nicht existiert oder sich nicht im Systempfad befindet. Überprüfen Sie Ihre Schreibweise.
  • 128: Ungültiges Exit-Argument.
  • Sie haben eine Nummer verwendet, die als Exit-Code keinen Sinn ergibt.
  • 130: Programm durch Ctrl + C beendet. Dies geschieht, wenn Sie ein Programm manuell stoppen.
  • 137: Out-of-memory (OOM)-Zustand.
  • 255: Das Programm hat versucht, einen Exit-Code außerhalb des gültigen Bereichs zurückzugeben.

Einige spezifische Programme haben ihre eigenen einzigartigen Exit-Codes. Zum Beispiel gibt grep 0 zurück, wenn es Übereinstimmungen findet, 1, wenn es keine Übereinstimmungen findet, und 2, wenn ein Fehler auftritt. Außerdem können Entwickler technisch gesehen nahezu jede Nummer verwenden (normalerweise 0 bis 255 auf Unix-ähnlichen Systemen).

Befehle basierend auf Erfolg oder Fehler verknüpfen

Bash bietet auch zwei praktische Operatoren && und ||, mit denen Sie Befehle abhängig davon aneinanderreihen können, ob der vorherige erfolgreich oder fehlerhaft war:

  • && (UND-Operator): Führt den nächsten Befehl nur aus, wenn der vorherige erfolgreich war (Exit-Code 0).
  • || (ODER-Operator): Führt den nächsten Befehl nur aus, wenn der vorherige fehlgeschlagen ist (nicht null Exit-Code).

Wenn Sie beispielsweise ein Verzeichnis erstellen und dann sofort in dieses wechseln möchten. Wenn das Erstellen des Verzeichnisses fehlschlägt oder der Wechsel nicht funktioniert, möchten Sie möglicherweise eine Fehlermeldung anzeigen:

mkdir new_directory && cd new_directory || echo "Fehler beim Erstellen und Zugreifen auf das Verzeichnis"

Hier versucht mkdir new_directory, den Ordner zu erstellen. Wenn das funktioniert, wird sofort cd new_directory ausgeführt. Wenn einer der Schritte fehlschlägt, greift der ||-Operator ein und gibt die Fehlermeldung aus.

Abschließende Gedanken

Exit-Codes mögen wie ein kleines Detail erscheinen, aber sie sind Teil dessen, was Kommandozeilenwerkzeuge so leistungsfähig macht. Sie schaffen eine gemeinsame Sprache für Programme, um über Erfolg und Misserfolg zu kommunizieren, was für den Aufbau komplexer Systeme unerlässlich ist.

Wenn Sie neu in der Kommandozeilenarbeit sind, gewöhnen Sie sich daran, echo $? zu überprüfen, wenn Befehle sich nicht wie erwartet verhalten. Bald werden Sie Exit-Codes in Ihren eigenen Skripten verwenden und dieses einfache, aber effektive Kommunikationssystem schätzen.

Häufig gestellte Fragen

Wie überprüfe ich den Exitcode eines Befehls?

Um den Exitcode eines Befehls zu überprüfen, gehen Sie folgendermaßen vor:

 

  • Befehl ausführen: Führen Sie den gewünschten Befehl in Ihrem Skript aus, z. B. ls.
  • Exitcode abfragen: Direkt nach dem Befehl können Sie den Exitcode abfragen, indem Sie die spezielle Variable $? verwenden: bash ls echo $?
  • Interpretation des Exitcodes:
      • - Ein Wert von

    0

      bedeutet, dass der Befehl erfolgreich war.
  • Ein Wert ungleich 0 zeigt an, dass ein Fehler aufgetreten ist.
  • Exitcode im Skript verwenden: Falls Sie den Exitcode in einem Skript nutzen wollen, können Sie Bedingungen verwenden: bash if [ $? -eq 0 ]; then echo 'Erfolgreich ausgeführt' else echo 'Fehler aufgetreten' fi
  • Exitcode für das Skript bestimmen: Sie können den Exitstatus Ihres Skripts mit dem Befehl exit angeben. Der nachfolgende Wert legt den Exitcode des Skripts fest: bash exit 1 # Beendet das Skript mit einem Fehlercode Diese Schritte helfen Ihnen, den Exitcode von Befehlen effektiv zu überprüfen und zu nutzen.

 

Was ist der Exitcode 253 in Linux?

Der Exitcode 253 in Linux signalisiert, dass die Systemumgebung oder Konfiguration ungültig ist. Obwohl der Befehl syntaktisch korrekt ist, konnte er aufgrund fehlender Konfiguration oder Anmeldeinformationen nicht ausgeführt werden. Hier sind einige mögliche Ursachen und Lösungen:

    • -

Ungültige Konfiguration

    : Überprüfen Sie, ob alle notwendigen Umgebungsvariablen korrekt gesetzt sind.

  • Fehlende Berechtigungen: Stellen Sie sicher, dass der Benutzer, der den Befehl ausführt, die erforderlichen Berechtigungen hat.
  • Unvollständige Anmeldedaten: Vergewissern Sie sich, dass alle nötigen Anmeldedaten, wie Benutzername und Passwort, zur Verfügung stehen.
  • Befehlsabhängigkeiten: Prüfen Sie, ob alle erforderlichen Abhängigkeiten und Ressourcen verfügbar sind, bevor Sie den Befehl ausführen. Durch die Behebung dieser Punkte können häufig Probleme behoben werden, die zum Exitcode 253 führen.

Was ist der Exit-Befehl in Linux?

Der Exit-Befehl in Linux wird verwendet, um die aktuelle Shell oder ein Skript zu beenden. Hier sind einige wesentliche Punkte:

    • -

Befehl:exit

  • Funktionsweise: Dieser Befehl schließt den aktuellen Shell-Prozess.
  • Syntax: exit [n]
  • n: Optionaler Statuscode, der zurückgegeben wird. Wird kein Wert angegeben, entspricht der Status dem des zuletzt ausgeführten Befehls.
  • Verwendung: Häufig in Skripten und interaktiven Shell-Sitzungen, um die Ausführung zu beenden.
  • Hilfe: Mit exit --help erhalten Sie Informationen zur Verwendung des Befehls. Dies ist eine grundlegende und nützliche Funktion in der Unix/Linux-Umgebung.

Was ist der Exitcode 128 in Linux?

Der Exitcode 128 in Linux tritt auf, wenn ein Skript mit einem ungültigen Argument beendet wird. Er deutet auf einen internen Fehler im Skript hin und kann durch verschiedene Situationen ausgelöst werden:

    • -

Ungültige Argumente

    : Wenn ein Skript versucht, mit Argumenten zu arbeiten, die nicht erwartet oder valide sind.

  • Signalbehandlung: Der Code kann auch durch das Empfangen eines Fehlsignals während der Ausführung entstehen. Dieser Exitcode hilft Entwicklern, Probleme im Skript zu identifizieren und entsprechende Korrekturen vorzunehmen. Es ist wichtig, die Übergabe von Argumenten in Skripten zu überprüfen, um sicherzustellen, dass sie korrekt und valide sind.

Index
  1. Debugging Ihres Skripts mit Exit-Codes
  2. Eigene Exit-Codes festlegen
  3. Liste häufiger Exit-Codes
  4. Befehle basierend auf Erfolg oder Fehler verknüpfen
  5. Abschließende Gedanken
  6. Häufig gestellte Fragen
    1. Wie überprüfe ich den Exitcode eines Befehls?
    2. Was ist der Exitcode 253 in Linux?
    3. Was ist der Exit-Befehl in Linux?
    4. Was ist der Exitcode 128 in Linux?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Go up