Czy istnieje sposób na określenie, która wersja (dystrybucja i jądro, jak sądzę) działa na Linuksie (z wiersza poleceń), która działa na dowolnym systemie Linux?
źródło
Czy istnieje sposób na określenie, która wersja (dystrybucja i jądro, jak sądzę) działa na Linuksie (z wiersza poleceń), która działa na dowolnym systemie Linux?
Jądro jest powszechnie wykrywane za pomocą uname
:
$ uname -or
2.6.18-128.el5 GNU/Linux
Naprawdę nie ma sposobu na cross-dystrybucję, aby określić, na jakiej dystrybucji i wersji jesteś. Próbowano uczynić to spójnym, ale ostatecznie jest niestety różne. Narzędzia LSB dostarczają tych informacji, ale jak na ironię nie wszędzie są instalowane domyślnie. Przykład w systemie Ubuntu 9.04 z lsb-release
zainstalowanym pakietem:
$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty
W przeciwnym razie najbliższą powszechnie dostępną metodą jest sprawdzanie plików. Istnieją one na większości popularnych platform i na ich pochodnych (tj. Red Hat i CentOS)./etc/something-release
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
Obecnie nie mam dostępnego systemu SUSE, ale wydaje mi się, że tak /etc/SuSE-release
.
Slackware ma /etc/slackware-release
i / lub /etc/slackware-version
.
Mandriva ma /etc/mandriva-release
.
W przypadku większości popularnych dystrybucji
$ cat /etc/*{release,version}
najczęściej będzie działać. W przypadku instalacji „serwerowych” uproszczonych i pozbawionych kości może nie być zainstalowany pakiet „release” dla dystrybucji.
Ponadto dwa programy innych firm, których można użyć do automatycznego uzyskania tych informacji, to Ohai i Facter .
Należy pamiętać, że wiele dystrybucji zawiera tego rodzaju informacje w /etc/issue
lub /etc/motd
, ale niektóre zasady bezpieczeństwa i najlepsze praktyki wskazują, że pliki te powinny zawierać banery powiadomień o dostępie.
Powiązane: Jak znaleźć wersję pakietu oprogramowania zainstalowanego w węźle? , Lalek .
Możesz także spróbować:
Zwykle (choć nie zawsze) powie ci, jakiej dystrybucji używasz.
/etc/issue
to plik używany do ekranu logowania.źródło
\S[newline]Kernel \r on an \m
Jądro:
uname -a
źródło
co najmniej dla Ubuntu, Fedory i OpenSUSE.
Nie działa w systemie OS X przynajmniej do 10.9 (Mavericks). Zamiast tego użyj sw_vers .
OpenSUSE miał wydanie cat / etc / SuSE do 13.1, ale jest przestarzałe na rzecz wydania os.
Redhat 6.1 ma wydanie cat / etc / redhat
źródło
lsb_release -a
, jeśli jest dostępny, jest przydatny.źródło
cat /proc/version
znalazłem mnie Red Hat na udostępnionym VPS.źródło
Jądro:
uname -r
Distro:
lsb_release -a
Będą działać na większości systemów Linux
źródło
Jednowarstwowa
źródło
Ten problem można również rozwiązać za pomocą Pythona z
platform
modułem :Korzystanie z
platform()
funkcji:Powyższe polecenie zwraca pojedynczy ciąg identyfikujący platformę bazową z jak największą ilością użytecznych informacji.
Lub używając
uname()
funkcji:Powyższe polecenie Zwraca
namedtuple()
zawierających sześć cech:system
,node
,release
,version
,machine
, iprocessor
.Lub używając
dist()
funkcji:Ostatnie polecenie próbuje określić nazwę nazwy dystrybucji systemu operacyjnego Linux , ale jest ona przestarzała od Python 3.5 i zostanie usunięta w Python 3.8 .
źródło