Wie finde ich heraus, welche Linux-Version ich verwende?


209

Gibt es eine Möglichkeit, festzustellen, welche Linux-Version (Distribution & Kernel-Version, nehme ich an) (von der Befehlszeile aus) auf einem beliebigen Linux-System ausgeführt wird?

Antworten:


267

Der Kernel wird allgemein erkannt mit uname:

$ uname -or
2.6.18-128.el5 GNU/Linux

Es gibt wirklich keine verteilungsübergreifende Methode, um festzustellen, auf welcher Distribution und Version Sie sich befinden. Es gab Versuche, dies zu vereinheitlichen, aber letztendlich variiert es leider. LSB-Tools liefern diese Informationen, sind jedoch ironischerweise nicht überall standardmäßig installiert. Beispiel auf einem Ubuntu 9.04-System mit lsb-releaseinstalliertem Paket:

$ lsb_release -irc
Distributor ID: Ubuntu
Release:        9.04
Codename:       jaunty

Ansonsten ist die am besten verfügbare Methode das Überprüfen von Dateien. Diese sind auf den meisten gängigen Plattformen und ihren Derivaten (z. B. Red Hat und CentOS) vorhanden./etc/something-release

Hier sind einige Beispiele.

Ubuntu hat /etc/lsb-release:

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"

Aber Debian hat /etc/debian_version:

$ cat /etc/debian_version
5.0.2

Fedora, Red Hat und CentOS haben:

Fedora: $ cat /etc/fedora-release
Fedora release 10 (Cambridge)

Red Hat/older CentOS: $ cat /etc/redhat-release
CentOS release 5.3 (Final)

newer CentOS: $ cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)

Gentoo:

$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1

Ich habe im Moment kein SUSE-System zur Verfügung, aber ich glaube, das ist es /etc/SuSE-release.

Slackware hat /etc/slackware-releaseund / oder /etc/slackware-version.

Mandriva hat /etc/mandriva-release.

Für die meisten populären Distributionen dann,

$ cat /etc/*{release,version}

wird am häufigsten funktionieren. Bei abgespeckten "Server" -Installationen und Barebones-Installationen ist möglicherweise nicht das "Release" -Paket für die Distribution installiert.

Darüber hinaus gibt es zwei Programme von Drittanbietern, mit denen Sie diese Informationen automatisch abrufen können : Ohai und Facter .

Beachten Sie, dass viele Distributionen diese Art von Informationen in /etc/issueoder enthalten /etc/motd. Einige Sicherheitsrichtlinien und bewährte Methoden weisen jedoch darauf hin, dass diese Dateien Banner für Zugriffsbenachrichtigungen enthalten sollten.

Verwandte Themen : Wie finde ich heraus, welche Version des Softwarepakets auf dem Knoten installiert ist? , .


3
Lol hier habe ich gedacht, um vorzuschlagen: Suchen Sie nach About!
Ivo Flipse

2
Slackware hat / etc / Slackware-Version
Ken Keenan

Danke Ken, ich habe auch kein Slackware-System.
Jtimberman

4
IOW: ls / etc / * {release, version} und überprüfen, was zurückkommt ...
freiheit

1
Die meisten haben auch / etc / issue
Drew Stephens

41

Sie könnten auch versuchen:

$ cat /etc/issue

In der Regel (jedoch nicht immer) erfahren Sie, welche Distribution Sie verwenden. /etc/issueist die Datei, die für den Anmeldebildschirm verwendet wird.


2
Dies ist die einzige, die es für mich auf einem gemeinsam genutzten Media Temple-Server geschafft hat. Vielen Dank!!
TryTryAgain

2
Ha, auf RedHat, das ist nur\S[newline]Kernel \r on an \m
Ruffin

20

Kernel: uname -a


+1. Für ähnliche Systeme wie MinGW ist das "-a" erforderlich, um die Versionsinformationen abzurufen, z. B. "MINGW32_NT-5.1 LAP065 1.0.17 (0.48 / 3/2) 2011-04-24 23:39 i686 Msys".
Peter Mortensen

15
cat /etc/os-release

mindestens für Ubuntu, Fedora und OpenSUSE.

Funktioniert nicht für OS X mindestens bis 10.9 (Mavericks). Verwenden Sie stattdessen sw_vers .

OpenSUSE hatte cat / etc / SuSE-Release bis 13.1, wird jedoch zugunsten von OS-Release abgelehnt.

Redhat 6.1 hat cat / etc / redhat-release



14

lsb_release -aWenn verfügbar, ist dies hilfreich.


12

cat /proc/version Ich habe Red Hat auf einem gemeinsam genutzten VPS gefunden.


6

Kernel: uname -r

Distribution: lsb_release -a

Diese laufen auf den meisten Linux-Systemen


5

Einzeiler

lsb_release -a && uname -r

1
Dies könnte als Kommentar zu Albert Zs Antwort angemessener sein.
Fixer1234

1
mächtige Antwort, um alle Antworten abzuschließen! Ich muss für die Mühe
stimmen

1

Dieses Problem kann auch mit Python mit dem platformModul gelöst werden :

Mit platform()funktion:

python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6

Der obige Befehl gibt eine einzelne Zeichenfolge zurück, die die zugrunde liegende Plattform mit möglichst vielen nützlichen Informationen identifiziert.

Oder mit uname()Funktion:

python -c 'import platform; print platform.uname()'
# ('Linux', 'debian', '4.9.0-8-amd64', '#1 SMP Debian 4.9.130-2 (2018-10-27)', 'x86_64', '')

Der obige Befehl Gibt ein namedtuple()mit sechs Attributen: system, node, release, version, machine, und processor.

Oder mit dist()Funktion:

python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')

Mit dem letzten Befehl wird versucht, den Namen des Linux-Distributionsnamens zu ermitteln. Dieser Name ist jedoch seit Python 3.5 veraltet und wird in Python 3.8 entfernt .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.