2009-07-22 19:20:02 +0000 2009-07-22 19:20:02 +0000
211
211

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?

Odpowiedzi (9)

269
269
269
2009-07-22 19:34:33 +0000

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 .

42
42
42
2009-07-22 19:58:38 +0000

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ę.

20
20
20
2009-07-22 19:21:27 +0000

Kernel: uname -a

16
16
16
2014-04-02 22:56:41 +0000
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.

14
14
14
2009-07-22 23:48:08 +0000

lsb_release -a, jeśli jest dostępny, jest użyteczny.

12
12
12
2014-06-26 06:59:45 +0000

cat /proc/version znalazł mnie Red Hat na wspólnym VPS.

6
6
6
2015-06-18 17:06:13 +0000

Jądro: uname -r

Distro: lsb_release -a

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

5
5
5
2018-01-29 14:51:31 +0000

One-liner

lsb_release -a && uname -r
1
1
1
2019-01-08 07:25:25 +0000

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 _.