Подтвердить что ты не робот

Как узнать, что использует дистрибутив Linux

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

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

4b9b3361

Ответ 2

cat /etc/*release

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

Ответ 3

Это, досадно, сложнее, чем кажется.

Для систем 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.

Ответ 4

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

Ответ 5

В моем .cshrc меня есть

setenv DISTRO 'sed -e 's/.*(//' -e 's/)).*//' /proc/version'

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

export DISTRO='sed -e 's/.*(//' -e 's/)).*//' /proc/version'

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

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

Ответ 6

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

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

Ответ 7

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

cd /proc/

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

Ответ 8

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

  • lsb_relase -a

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

  1. uname -a

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

  1. cat/etc/* release

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

  1. cat/etc/issue

Эта команда считывает файл проблема из папки /etc.

  1. cat/proc/version

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

Ответ 9

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

[[email protected] ~]$ 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

Ответ 10

uname -r

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

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

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

Ответ 11

NeoFetch

... это довольно профессиональный скрипт BASH, в котором должна быть вся информация, которую вы можете пожелать.

(Отказ от ответственности: я не связан с ним)

использование

neofetch --stdout | grep '^OS: ' | sed -e 's/OS:[[:space:]]\+//'

может дать:

Debian GNU/Linux 11 (яблочко) x86_64

но есть гораздо больше информации.

Монтаж

Опции:

  1. системный пакет neofetch

  2. Если это не доступно, либо посмотрите официальные инструкции по установке

  3. или для одноразового использования - если у вас есть вера и подключение к интернету - вы можете использовать:

    wget 'https://raw.githubusercontent.com/dylanaraps/neofetch/master/neofetch' \
        && bash neofetch --stdout \
        && rm neofetch
    

Ответ 12

Попробуйте uname -a