Як дізнатися, яку версію Linux я запускаю?


209

Чи є спосіб визначити, яка версія (дистрибутив і версія ядра, я думаю) працює під управлінням Linux (з командного рядка), яка працює в будь-якій системі Linux?

Відповіді:


267

Ядро універсально виявляється за допомогою 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

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

Ось кілька прикладів.

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.

Мандріва має /etc/mandriva-release.

Більшість популярних дистрибуцій тоді

$ cat /etc/*{release,version}

найчастіше буде працювати. У витягнутих і боребоневих "серверних" установках може не встановити пакет "випуск" для дистрибутива.

Крім того, дві сторонні програми, які ви можете використовувати для автоматичного отримання цієї інформації, - Ohai і Facter .

Зауважте, що в багатьох дистрибутивах є така інформація в /etc/issueабо /etc/motd, але деякі політики безпеки та найкращі практики свідчать, що ці файли повинні містити банери повідомлень про доступ.

Пов'язане: Як дізнатись версію програмного пакета, встановленого на вузлі? , .


3
Lol тут я думав запропонувати: шукайте про!
Іво Фліпс

2
Slackware має / etc / slackware-version
Ken Keenan

Дякую Кен, у мене також немає системи програмного забезпечення.
jtimberman

4
IOW: ls / etc / * {реліз, версія} та вивчити все, що повертається ...
freiheit

1
Більшість також мають / etc / issue
Дрю Стівенс,

41

Ви також можете спробувати:

$ cat /etc/issue

Це, як правило, (не завжди) підкаже, який дистрибутив ви використовуєте. /etc/issue- це файл, який використовується для екрана входу.


2
Це єдиний, хто прибив її мені на спільний сервер Media Temple. Дякую!!
TryTryAgain

2
Ха, на RedHat, це просто\S[newline]Kernel \r on an \m
ruffin

20

Ядро: uname -a


+1. Для подібних систем, таких як MinGW , для отримання інформації про версію потрібно "-a", наприклад, "MINGW32_NT-5.1 LAP065 1.0.17 (0.48 / 3/2) 2011-04-24 23:39 i686 Msys".
Пітер Мортенсен

15
cat /etc/os-release

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

Не працює для OS X принаймні до 10.9 (Mavericks). Замість цього використовуйте sw_vers .

OpenSUSE мав cat / etc / SuSE-реліз до 13.1, але застаріло на користь OS-релізу.

Redhat 6.1 має cat / etc / redhat-release






5

Однолінійний

lsb_release -a && uname -r

1
Це може бути більш доречним як коментар до відповіді Альберта Z.
fixer1234

1
могутня відповідь, щоб укласти всі відповіді! Мушу підтримати зусилля :)
Б.Кокіс

1

Цю проблему також можна вирішити, використовуючи 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()функції:

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

Остання команда намагається визначити ім'я розповсюдження імені Linux OS , але воно застаріле з Python 3.5 і буде видалено в Python 3.8 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.