Jak dowiedzieć się, którą wersję systemu Linux używam?


209

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?

Odpowiedzi:


267

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-releasezainstalowanym 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-releasei / 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/issuelub /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? , .


3
Lol tutaj myślałem, aby zasugerować: poszukaj O!
Ivo Flipse,

2
Slackware jest / etc / Slackware-wersja
Ken Keenan

Dzięki Ken, ja też nie mam systemu Slackware.
jtimberman

4
IOW: ls / etc / * {release, version} i sprawdź, co wróci ...
freiheit

1
Większość ma także / etc / problem
Drew Stephens,

41

Możesz także spróbować:

$ cat /etc/issue

Zwykle (choć nie zawsze) powie ci, jakiej dystrybucji używasz. /etc/issueto plik używany do ekranu logowania.


2
Jest to jedyny, który przybił go dla mnie na wspólnym serwerze Media Temple. Dzięki!!
TryTryAgain

2
Ha, na RedHat, to po prostu\S[newline]Kernel \r on an \m
ruffin

20

Jądro: uname -a


+1. W przypadku podobnych systemów, takich jak MinGW , wymagane jest „-a”, aby uzyskać informacje o wersji, na przykład „MINGW32_NT-5.1 LAP065 1.0.17 (0.48 / 3/2) 2011-04-24 23:39 i686 Msys”.
Peter Mortensen



12

cat /proc/version znalazłem mnie Red Hat na udostępnionym VPS.


6

Jądro: uname -r

Distro: lsb_release -a

Będą działać na większości systemów Linux


5

Jednowarstwowa

lsb_release -a && uname -r

1
Może to być bardziej odpowiednie jako komentarz do odpowiedzi Alberta Z.
fixer1234

1
potężna odpowiedź na zakończenie wszystkich odpowiedzi! Muszę głosować za wysiłek :)
B.Kocis

1

Ten problem można również rozwiązać za pomocą Pythona z platformmodułem :

Korzystanie z platform()funkcji:

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

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:

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ższe polecenie Zwraca namedtuple()zawierających sześć cech: system, node, release, version, machine, i processor.

Lub używając dist()funkcji:

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

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 .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.