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?
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:
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-release
installiertem 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-release
und / 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/issue
oder 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? , Puppe .
Sie könnten auch versuchen:
$ cat /etc/issue
In der Regel (jedoch nicht immer) erfahren Sie, welche Distribution Sie verwenden. /etc/issue
ist die Datei, die für den Anmeldebildschirm verwendet wird.
\S[newline]Kernel \r on an \m
Kernel: uname -a
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
Dieses Problem kann auch mit Python mit dem platform
Modul 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 .