Как узнать, какой дистрибутив Linux используется - PullRequest
23 голосов
/ 05 ноября 2008

Иногда мне нужно получить доступ к некоторым серверам под управлением Linux (или, возможно, к другому Unix-подобному SO), но я не знаю, как проверить, какой дистрибутив используется на сервере (бывают случаи, когда даже «ответственный» человек за сервер не знает).

Существует ли простой и надежный способ обнаружить его, который является единообразным и последовательным для всех из них?

Ответы [ 11 ]

26 голосов
/ 05 ноября 2008

lsb_release -i может работать на вас.

Более подробная информация доступна с lsb_release -a

Некоторое обсуждение на http://etbe.coker.com.au/2007/08/30/identifying-the-distribution-of-a-linux-system/

24 голосов
/ 05 ноября 2008
cat /etc/*release

Большинство дистрибутивов помещают файл релиза в /etc/ (например, /etc/redhat-release, /etc/gentoo-release и т. Д.), В котором обычно содержится номер версии вашего дистрибутива.

7 голосов
/ 05 ноября 2008

К сожалению, эта проблема сложнее, чем кажется.

Для систем Linux используйте lsb_release.

$ lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 8.04.1
Release:        8.04
Codename:       hardy
$ lsb_release -i
Distributor ID: Ubuntu

У этого ограничения есть ограничение, что lsb_release работает только для выпусков Linux.

Для всех систем Unix вы также можете анализировать uname.

$ uname -a
Linux blue-laptop 2.6.24-21-generic #1 SMP Tue Oct 21 23:43:45 UTC 2008 i686 GNU/Linux

Информацию о системах и дистрибутивах можно найти на странице uname Wikipedia .

3 голосов
/ 05 ноября 2008

Вы должны спросить себя, действительно ли вам нужно знать, какой дистрибутив используется (возможно, потому что вы хотите собрать пакет, специфичный для этого дистрибутива). Во многих других случаях это гораздо лучшая идея, просто протестировать и посмотреть, есть ли нужные вам функции или нет. Это может показаться намного больше работы, потому что вы должны тестировать каждую функцию по очереди, но таким образом, ваше программное обеспечение становится гораздо более гибким.

1 голос
/ 04 декабря 2017

Существуют различные команды, которые вы можете использовать, чтобы проверить, какой дистрибутив используется. Здесь я упоминаю только 5 из них.

  1. lsb_relase -a

lsb_release предоставляет информацию о распределении. Принимая во внимание, что -a отображает всю информацию о распределении. Вы также можете использовать -d, который показывает только описание.

  1. uname -a

uname также предоставляет системную информацию. Принимая во внимание, что -a отображает всю информацию. Вы можете использовать man uname для других вариантов.

  1. cat / etc / * release

Вы также можете использовать команду cat для распечатки всей информации о выпуске из папки etc Эта команда фактически читает файлы lsb-release и os-release из папки / etc .

  1. кошка / etc / issue

Эта команда читает файл issue из папки / etc .

  1. cat / proc / version

Эта команда читает файл версии из папки / proc . Папка / proc содержит информацию о системном процессе.

1 голос
/ 17 июня 2010

Файловая система proc : каталог в Linux со всей информацией об аппаратном уровне. Так что просто наберите

cd /proc/

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

1 голос
/ 05 ноября 2008

Я обнаружил, что в / etc / issue обычно есть что-то о используемом дистрибутиве.

Но я не знаю о его доступности во всех дистрибутивах.

1 голос
/ 05 ноября 2008

По моему .cshrc у меня

setenv DISTRO ` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' `

Для ksh / Bash пользователей, я полагаю, это переводится как

export DISTRO=` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' `

и, конечно, это может не сработать для вашего любимого дистрибутива. (У меня были проблемы с Oracle Unbreakable Linux , дающим что-то похожее на Redhat, но этого было достаточно для моих целей.)

Обновление, август 2016 года Некоторое время я не использовал Linux таким образом (2008 год уже давно). Похоже, это больше не работает для систем, которые у меня сейчас есть.

0 голосов
/ 05 ноября 2008
uname -r

должен печатать версию ядра, работающую в данный момент (по крайней мере, для Linux, не знаю если то же самое для * BSD или других). Это не то же самое, что дистрибутив, но версия ядра часто включает имя дистрибутива, если оно настроено, например «2.6.27-gentoo-r1» или что-то в этом роде.

Init часто печатает что-то при загрузке, но это не очень хорошо, когда он работает.

В противном случае, насколько я знаю, нет ничего универсального.

0 голосов
/ 05 ноября 2008

Вы можете использовать «uname»:

[anton@localhost ~]$ uname -a
Linux localhost 2.6.26-ARCH #1 SMP PREEMPT Tue Aug 26 21:15:43 UTC 2008 i686 AMD Athlon(tm) 64 Processor 3000+ AuthenticAMD GNU/Linux
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...