So überprüfen Sie die Linux-Distribution, Version, den Kernel und die Architektur
Der beste erste Schritt, um eine Linux-Distribution und deren Version zu identifizieren, ist das Lesen von /etc/os-release. Sein PRETTY_NAME-Feld liefert einen menschenlesbaren Namen, während ID und VERSION_ID Identifikatoren bereitstellen, die in Skripten leichter zu verwenden sind.
Verwenden Sie hostnamectl, wenn Sie eine bequeme Zusammenfassung der Distribution, des Kernels und der Architektur möchten. Verwenden Sie uname -r für die aktuell laufende Linux-Kernel-Version, nicht für die Distributionsversion. Diese Werte beschreiben verschiedene Teile des Systems und sollten nicht als austauschbar behandelt werden.
Zu verwendende Befehle zuerst
Um nur den Namen der Distribution und die Version zu überprüfen, beginnen Sie mit:
cat /etc/os-release
Um nur die nützlichsten Felder anzuzeigen:
grep -E '^(PRETTY_NAME|ID|VERSION_ID|ID_LIKE)=' /etc/os-release
Führen Sie die folgenden Befehle aus, wenn Sie auch die Kernel-Version und die CPU-Architektur benötigen.
cat /etc/os-release hostnamectl uname -r uname -m
Was ist eine Linux-Distribution?
Streng genommen ist Linux der Betriebssystemkernel. Eine Linux-Distribution kombiniert diesen Kernel mit Systemwerkzeugen, Bibliotheken, einem Paketmanager, einem Installer und einer Standardkonfiguration, um ein nutzbares Betriebssystem zu bilden.
Ubuntu, Debian, Fedora, Rocky Linux, openSUSE und Arch Linux verwenden alle den Linux-Kernel, aber ihre Paketformate, Update-Richtlinien und Administrationsbefehle unterscheiden sich. Überprüfen Sie die Distributionsfamilie und Version, bevor Sie Installations- oder Server-Konfigurationsanweisungen anwenden.
| Distributionsfamilie | Gängige Distributionen | Paketformat und Werkzeuge | Zu überprüfende Werte |
|---|---|---|---|
| Debian-Familie | Debian, Ubuntu, Linux Mint | DEB, APT | ID und ID_LIKE=debian |
| Red Hat-Familie | RHEL, Fedora, Rocky Linux, AlmaLinux | RPM, DNF | ID und RHEL- oder Fedora-bezogene Werte in ID_LIKE |
| SUSE-Familie | openSUSE, SUSE Linux Enterprise | RPM, Zypper | ID und ID_LIKE=suse |
| Arch-Familie | Arch Linux, Manjaro | pkg.tar.zst, Pacman | ID und ID_LIKE=arch |
| Unabhängig | Alpine Linux und andere | Distributionsabhängig | ID und die offizielle Dokumentation der Distribution |
ID_LIKE ist unterstützende Information, die eine verwandte oder übergeordnete Familie beschreibt. Sie kann fehlen. Verwenden Sie ID als primären Distributionsbezeichner und konsultieren Sie ID_LIKE nur, wenn die Familienkompatibilität von Bedeutung ist.
Überprüfen Sie die Distribution und Version in /etc/os-release
/etc/os-release speichert Betriebssystem-Identifikationsdaten als KEY=value Einträge. Laut der offiziellen systemd os-release-Spezifikation sollte Software /etc/os-release bevorzugen und auf /usr/lib/os-release zurückgreifen, wenn Erstere nicht verfügbar ist.
Alle Identifikationsfelder anzeigen
cat /etc/os-release
Die genauen Felder variieren je nach Distribution, aber die Ausgabe ähnelt üblicherweise:
PRETTY_NAME="Ubuntu 24.04 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian
Dieses Beispiel identifiziert Ubuntu 24.04 in der Debian-Familie. Patch-Level-Text und andere Details können je nach Distribution und Update-Status variieren.
Die wichtigsten os-release-Felder verstehen
| Feld | Bedeutung | Typische Nutzung |
|---|---|---|
PRETTY_NAME |
Für Menschen lesbarer Distributionsname und Version | Anzeige und manuelle Inspektion |
NAME |
Betriebssystemname ohne die Version | Beschreibende Bezeichnungen |
ID |
Distributionskennung in Kleinbuchstaben | Distributionsabhängige Verzweigungen in Skripten |
VERSION_ID |
Distributionsversion für maschinelle Vergleiche | Unterstützte Versionsprüfungen |
ID_LIKE |
Verwandte oder übergeordnete Distributionsfamilien | Bestimmung wahrscheinlicher Paket- und Konventionskonfigurationen |
VERSION_CODENAME |
Codename für die Distributionsversion | Repository-Konfiguration und Dokumentation |
Eine Rolling-Release-Distribution hat möglicherweise keine feste Hauptversion und kann VERSION_ID auslassen. Ein fehlendes optionales Feld bedeutet nicht, dass die Datei ungültig ist.
Verwenden Sie hostnamectl für eine Systemübersicht
Bei Distributionen, die systemd verwenden, kann hostnamectl den Hostnamen, das Betriebssystem, den Kernel und die CPU-Architektur zusammen anzeigen.
hostnamectl
Die nützlichsten Felder sind:
- Betriebssystem: Distributionsname und -version
- Kernel: aktuell laufende Kernel-Version
- Architektur: Systemarchitektur
- Virtualisierung: erkannte Virtualisierungs- oder Container-Umgebung
hostnamectl ist eine praktische Zusammenfassung, kann jedoch in Minimalinstallationen, einigen Containern oder Distributionen, die systemd nicht verwenden, nicht verfügbar sein. Verwenden Sie in diesen Umgebungen /etc/os-release und uname.
Unterscheiden Sie die Distributionsversion von der Kernel-Version
Die von uname gemeldeten Werte sind keine Distributionsversionen wie Ubuntu 24.04 oder Rocky Linux 10. Sie beschreiben den aktuell laufenden Kernel und die Hardwarearchitektur.
uname -r uname -m uname -a
| Befehl | Zurückgegebene Informationen | Beispielverwendung |
|---|---|---|
uname -r |
Kernel-Version | Überprüfung der Kompatibilität von Treiber und Kernel-Modul |
uname -m |
Hardware-Architektur | Auswahl von x86_64- oder aarch64-Paketen |
uname -a |
Mehrere kernelbezogene Werte in einer Zeile | Bereitstellung einer kompakten Fehlerbehebungsübersicht |
Ein System kann die gleiche Distributionsversion beibehalten, während es einen neueren Kernel erhält. Systeme mit derselben Distributionsversion können auch unterschiedliche Kernel ausführen. Nach einem Kernel-Paket-Update kann uname -r weiterhin den älteren Kernel anzeigen, bis das System neu gestartet wird. Die GNU Coreutils uname-Dokumentation definiert jede Option.
Verwenden Sie alternative Methoden auf älteren Systemen
Überprüfen Sie mit lsb_release
Wenn lsb_release installiert ist, kann es den Distributor, die Beschreibung, die Version und den Codenamen anzeigen.
lsb_release -a
Der Befehl ist nicht in jeder Minimalinstallation enthalten. Prüfen Sie ihn zuerst mit command -v lsb_release. Die Linux Standard Base lsb_release-Spezifikation beschreibt seine Ausgabefelder.
Lesen Sie distributionsspezifische Release-Dateien
Auf älteren Systemen ohne /etc/os-release verwenden Sie eine distributionsspezifische Datei als Fallback.
cat /etc/redhat-release cat /etc/debian_version cat /etc/alpine-release
Die Verfügbarkeit und das Format dieser Dateien unterscheiden sich je nach Distribution. In der Automatisierung bevorzugen Sie /etc/os-release und prüfen Sie nur die expliziten Fallback-Dateien, die Ihre unterstützten Distributionen verwenden. Vermeiden Sie es, blind jede Datei zu kombinieren, die /etc/*release entspricht.
Erkennen einer Distribution in einem Shell-Skript
Für Installationsskripte und die Automatisierung von Operationen verwenden Sie ID und VERSION_ID anstelle des Parsens des für Menschen lesbaren PRETTY_NAME.
if [ -r /etc/os-release ]; then
. /etc/os-release
printf 'distribution=%s\n' "$ID"
printf 'version=%s\n' "${VERSION_ID:-unknown}"
printf 'family=%s\n' "${ID_LIKE:-unknown}"
else
printf 'distribution=unknown\n'
uname -srm
fi
Der Ausdruck ${VERSION_ID:-unknown} verwendet unknown, wenn der Wert nicht gesetzt oder leer ist. Da viele Felder in os-release optional sind und Distributionen eigene Felder hinzufügen können, dürfen Skripte nicht davon ausgehen, dass jeder Wert existiert.
Beim Auswählen von Paketverwaltungsbefehlen vergleichen Sie zuerst ID und verwenden ID_LIKE nur als unterstützende Bedingung. Selbst Distributionen derselben Familie können unterschiedliche Repository-Konfigurationen und Paketnamen verwenden, daher garantiert die Familienähnlichkeit nicht, dass jeder Befehl austauschbar ist.
Ergebnisse in Containern, WSL und chroot interpretieren
Container
Innerhalb eines Containers identifiziert /etc/os-release normalerweise die User-Space-Distribution im Container-Image und nicht den Host. Im Gegensatz dazu kann uname -r den Kernel anzeigen, der mit dem Host geteilt wird. Es kann normal sein, dass diese Befehle verschiedene Distributionsfamilien zu beschreiben scheinen.
Windows Subsystem für Linux
Im Windows Subsystem für Linux (WSL) identifiziert /etc/os-release die installierte Ubuntu-, Debian- oder andere Distribution. Die Ausgabe von uname -r kann eine Zeichenkette enthalten, die einen WSL-Kernel identifiziert. Verwenden Sie weiterhin /etc/os-release für die Distributionsversion.
chroot-Umgebungen
Innerhalb eines Chroot-Systems identifiziert /etc/os-release die Distribution im Chroot-Dateisystem, während uname den mit dem laufenden Host geteilten Kernel beschreibt. Berücksichtigen Sie diesen Unterschied während der Wiederherstellungsarbeiten und übergreifender Distributions-Build-Prozesse.
Häufig gestellte Fragen
Was ist der zuverlässigste Befehl, um die Linux-Version zu überprüfen?
Um die Distribution und deren Version zu identifizieren, beginnen Sie mit cat /etc/os-release. Überprüfen Sie den Kernel separat mit uname -r und die CPU-Architektur mit uname -m.
Ist etwas falsch, wenn hostnamectl fehlt oder nicht ausgeführt werden kann?
Nicht unbedingt. Minimale Umgebungen und Distributionen, die kein systemd verwenden, stellen möglicherweise hostnamectl nicht bereit. Verwenden Sie /etc/os-release und uname, um die Informationen separat abzurufen.
Wie kann ich CentOS, Rocky Linux und AlmaLinux unterscheiden?
Überprüfen Sie ID in /etc/os-release. Diese Distributionen teilen Teile desselben Administrationsmodells, aber ihre Support-Richtlinien und Repositories sind getrennt. Behandeln Sie sie nicht als dieselbe Distribution nur basierend auf ID_LIKE.
Sind x86_64- und aarch64-Linux-Distributionsversionen?
Nein. Sie identifizieren Hardware-Architekturen. Eine Distributionsversion kann separate x86_64- und aarch64-Images bereitstellen, daher sollten Sie die Architektur beim Auswählen von Softwarepaketen oder Installationsmedien überprüfen.
Zusammenfassung
Verwenden Sie /etc/os-release für den Namen und die Version der Linux-Distribution, hostnamectl für eine praktische Systemübersicht, uname -r für den laufenden Kernel und uname -m für die Architektur.
In Skripten verwenden Sie ID, VERSION_ID und gegebenenfalls ID_LIKE, anstelle von PRETTY_NAME zu parsen. In Containern, WSL- und chroot-Umgebungen sollten Sie daran denken, dass die Benutzerraum-Distribution und der laufende Kernel aus unterschiedlichen Ebenen stammen können.




