Как узнать, какая у меня версия Linux?

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


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

  $ uname -or2.6.18-128.el5 GNU/Linux  

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

  $ lsb_release -ircDistributor ID: UbuntuRelease: 9.04Codename: jaunty  

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

Вот несколько примеров.

Ubuntu имеет /etc/lsb-release :

  $ cat/etc/lsb-releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=9.04DISTRIB_CODENAME=jauntyDISTRIB_DESCRIPTION="Ubuntu 9.04 " 

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

  $ cat/etc/debian_version5.0.2  

В Fedora, Red Hat и CentOS есть:

  Fedora: $ cat/etc/fedora-releaseFedora release 10 (Cambridge) Red  Hat/более ранняя версия CentOS: $ cat/etc/redhat-releaseCentOS, выпуск 5.3 (окончательная), более новая CentOS: $ cat/etc/centos-releaseCentOS Linux, выпуск 7.1.1503 (Core)  

Gentoo:

  $ cat/etc/gentoo-releaseGentoo 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 , но некоторые политики безопасности и передовой опыт указывает, что эти файлы должны содержать баннеры с уведомлениями о доступе.

По теме: Как узнать версию программного пакета, установленного на узле?, puppet.


45

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

  $ cat/etc/issue  

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

Поделиться
Улучшить этот ответ
отредактировано 8 января ’19 в 8:08
simhumileco
51955 серебряных знаков1313 бронзовых знаков
ответил 22 июля ’09 в 19:58
  • 2
    Это единственный, который мне помог на общем сервере Media Temple. Благодаря!! — TryTryAgain 8 фев. 2013, в 18:03
  • 2
    Ха, на RedHat это всего лишь S [newline] Kernel r на m — ruffin 2 февраля 2015, 20:21
  • Например, для Linux Mint — questionto42 11 декабря ’20 в 23:02
добавить комментарий |

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

  $ cat/etc/issue  

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


20

Ядро: uname -a

Поделиться
Улучшить этот ответ
ответил 22 июля ’09 в 19:21
  • +1. Для подобных систем, таких как MinGW, «-a» требуется для получения информации о версии, например, «MINGW32_NT-5.1 LAP065 1.0.17 (0.48/3/2) 2011-04-24 23:39 i686 Msys». — Питер Мортенсен 2 мая ’12 в 8:39
добавить комментарий |

Ядро: uname -a


16
  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

Поделиться
Улучшить этот ответ
отредактировано 9 марта ’17 в 13:05
anatoly techtonik
25222 серебряных знака1515 бронзовых знаков
ответил 02 апр. ’14 в 22:56
  • 1
    DOC: freedesktop.org/software/systemd/man/os-release.html — pevik 03 ноя. ’16 в 8:55
добавить комментарий |

  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
путь>

lsb_release -a , если доступно, полезно.

Поделиться
Улучшите этот ответ
ответил 22 июля ’09 в 23:48
добавить комментарий |

lsb_release -a , если доступно, полезно.


12

cat/proc/version нашел меня Red Hat на общем VPS.

Поделиться
Улучшите этот ответ
ответил 26 июня ’14 в 06:59
добавить комментарий |

cat/proc/version нашел меня Red Hat на общем VPS.


6

Ядро: uname -r

Distro: lsb_release -a

Они будут работать в большинстве систем Linux

Поделиться
Улучшить этот ответ
ответил 18 июня ‘ 15 в 17:06
добавить комментарий |

Ядро: uname -r

Distro: lsb_release -a

Они будут работать в большинстве систем Linux


5
  lsb_release -a && uname -r  

Поделиться
Улучшить этот ответ
отредактировал 12 июня ’20 в 13:48
Сообщество ♦
1
ответил 29 янв. в 14:51
  • 1
    Это может быть более подходящим в качестве комментария к ответу Альберта З. — fixer1234 29 янв. ’18 в 21:52
  • 1
    могущественный ответ, чтобы завершить все ответы! Я должен проголосовать за усилия 🙂 — Б.Коцис, 27 марта 2018, 13:17
добавить комментарий |

  lsb_release -a && uname -r  

2

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

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

  python -c 'платформа импорта;  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 () :

  python -c 'платформа импорта;  print platform.dist () '# (' debian ',' 9.6 ',' ')  

Последняя команда пытается определить имя ОС Linux название дистрибутива , но оно устарело, поскольку Python 3.5 и будет удалено в Python 3.8 .

Поделиться
Улучшите этот ответ
отредактировано 8 января ’19 в 8:35
ответил 8 января ’19 в 07:25
добавить комментарий |

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

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

   python -c 'платформа импорта;  print platform.platform () '# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6  

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

Или с помощью функции uname () :

   python -c 'платформа импорта;  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 () код> функция:

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

Последняя команда пытается определить имя ОС Linux название дистрибутива , но оно устарело, поскольку Python 3.5 и будет удалено в Python 3.8 .

Оцените статью
Botgadget.ru
Добавить комментарий