Jak mogę dowiedzieć się, jaką wersję Linuksa uruchamiam?
Czy istnieje sposób na określenie, jaka wersja (dystrybucja i wersja jądra, jak przypuszczam) Linuksa jest uruchomiona (z linii poleceń), która działa w dowolnym systemie Linux?
Czy istnieje sposób na określenie, jaka wersja (dystrybucja i wersja jądra, jak przypuszczam) Linuksa jest uruchomiona (z linii poleceń), która działa w dowolnym systemie Linux?
Jądro jest powszechnie wykrywane za pomocą uname
:
$ uname -or
2.6.18-128.el5 GNU/Linux
Naprawdę nie ma krzyżowego sposobu na określenie, w jakiej dystrybucji i wersji jesteś. Były próby uczynienia tego spójnym, ale ostatecznie niestety różni się to od siebie. Narzędzia LSB dostarczają tych informacji, ale jak na ironię nie wszędzie są domyślnie zainstalowane. Przykład na systemie Ubuntu 9.04 z zainstalowanym pakietem lsb-release
:
$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty
W przeciwnym razie najbliższą szeroko dostępną metodą jest sprawdzenie plików /etc/something-release
. Istnieją one na większości popularnych platform, a także na ich pochodnych (tzn, Red Hat i CentOS).
Oto kilka przykładów.
Ubuntu ma /etc/lsb-release
:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"
Ale Debian ma /etc/debian_version
:
$ cat /etc/debian_version
5.0.2
Fedora, Red Hat i CentOS mają:
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
Nie mam obecnie dostępnego systemu SUSE, ale uważam, że jest to /etc/SuSE-release
.
Slackware has /etc/slackware-release
and/or /etc/slackware-version
.
Mandriva has /etc/mandriva-release
.
For most of the popular distributions then,
$ cat /etc/*{release,version}
will most frequently work. Instalacje “serwerowe” pozbawione licencji i “serwerowe” instalacje barebone mogą nie mieć zainstalowanego pakietu “release” dla danej dystrybucji.
Dodatkowo, dwa programy innych firm, których możesz użyć do automatycznego uzyskania tych informacji to Ohai i Facter .
Zauważ, że wiele dystrybucji posiada tego typu informacje w /etc/issue
lub /etc/motd
, ale niektóre polityki bezpieczeństwa i najlepsze praktyki wskazują, że te pliki powinny zawierać banery powiadomień o dostępie.
Powiązane Jak znaleźć wersję pakietu oprogramowania zainstalowanego na węźle? marionetka .
Możesz również spróbować:
$ cat /etc/issue
Zazwyczaj (nie zawsze jednak) powie Ci, jakiej dystrybucji używasz. /etc/issue
jest plikiem używanym do logowania się.
cat /etc/os-release
co najmniej dla Ubuntu, Fedory i OpenSUSE.
Nie działa dla OS X co najmniej do 10.9 (Mavericks). Użyj zamiast tego sw_vers.
OpenSUSE miał cat /etc/SuSE-release do 13.1, ale jest przestarzały na rzecz os-release.
Redhat 6.1 ma cat /etc/redhat-release.
lsb_release -a && uname -r
Ta sprawa może być również rozwiązana za pomocą * Python z modułem platform
**:
Za pomocą funkcji platform()
:
python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6
Powyższa komenda _zwraca pojedynczy łańcuch identyfikujący platformę bazową z jak największą ilością użytecznych informacji. _
Lub użycie funkcji uname()
:
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', '')
Powyższa komenda _ zwraca namedtuple()
zawierający sześć atrybutów: system
, node
, release
, version
, machine
i processor
. _
Albo użycie funkcji dist()
:
python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')
Ostatnia komenda _ próbuje określić nazwę dystrybucji systemu Linux OS, ale jest **deprecated od Pythona 3.5_** i _będzie usunięta w Pythonie 3.8 _.