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

Как узнать, какую версию Linux я использую?

Есть ли способ определить, какая версия (дистрибутив и версия ядра, я полагаю) Linux работает (из командной строки), которая работает на любой системе Linux?

Ответы (9)

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

Ядро универсально детектируется с помощью uname:

$ uname -or
2.6.18-128.el5 GNU/Linux

. На самом деле не существует кросс-дистрибутива для определения того, какой дистрибутив и какая версия у вас есть. Предпринимались попытки сделать это последовательным, но в конечном счете, к сожалению, это варьируется. Инструменты LSB предоставляют эту информацию, но по иронии судьбы не везде устанавливаются по умолчанию. Пример на системе Ubuntu 9.04 с установленным пакетом lsb-release:

$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty

Иначе ближайший широкодоступный метод - проверка /etc/something-release файлов. Они существуют на большинстве распространённых платформ, а также на их производных (т.е, Red Hat и CentOS).

Приведем несколько примеров.

В Ubuntu есть /etc/lsb-release:

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"

Но в Debian есть /etc/debian_version:

$ cat /etc/debian_version
5.0.2

Fedora, Red Hat и CentOS есть:

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

У меня нет SUSE-системы на данный момент, но я думаю, что это /etc/SuSE-release.

Slackware имеет /etc/slackware-release и/или /etc/slackware-version.

Mandriva имеет /etc/mandriva-release.

Для большинства популярных дистрибутивов,

$ cat /etc/*{release,version}

будет работать чаще всего. В установках с полосками и пустыми “серверами” может не быть установлен пакет ‘release’ для дистрибутива.

Кроме того, две программы сторонних производителей, которые вы можете использовать для автоматического получения этой информации: Ohai и Facter .

Обратите внимание, что многие дистрибутивы имеют такую информацию в /etc/issue или /etc/motd, но некоторые политики безопасности и лучшие практики указывают, что эти файлы должны содержать баннеры уведомления о доступе.

Связанные Как узнать версию программного пакета, установленного на узле? марионетка .

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

Вы также можете попробовать:

$ cat /etc/issue

Обычно (не всегда, однако) он скажет вам, какой дистрибутив вы используете. /etc/issue - это файл, используемый для экрана входа в систему.

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

ядро: uname -a

16
16
16
2014-04-02 22:56:41 +0000
cat /etc/os-release

как минимум для Ubuntu, Fedora и OpenSUSE.

Не работает для OS X по крайней мере до 10.9 (Mavericks). Вместо этого используйте sw_vers.

У OpenSUSE есть cat /etc/SuSE-release до 13.1, но он устарел в пользу os-release.

В Redhat 6.1 есть cat /etc/redhat-release.

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

lsb_release -a, когда доступно, полезно.

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

cat /proc/version нашел мне Красную Шляпу на общем VPS.

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

Ядро: uname -r

Дистро: lsb_release -a

Они будут работать на большинстве систем 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

Это издание также может быть решена с помощью * Python с platform модулем **:

Использование platform() функции:

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

вышеприведенная команда _ возвращает единственную строку, определяющую базовую платформу с как можно большим количеством полезной информации. _

Или использование функции 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', '')

Приведенная выше команда _возвращает namedtuple(), содержащую шесть атрибутов: system, node, release, version, machine, processor и dist(). _

Или использование функции &007:

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

Последняя команда _ пытается определить имя дистрибутива Linux OS name, но оно **deprecated, так как на Python 3.5_** и _будет удалено на Python 3.8 _.

Похожие вопросы

6
10
7
5
5