Ответ 1
lsb_release -i
может работать для вас.
Более подробная информация доступна с помощью lsb_release -a
Некоторое обсуждение на http://etbe.coker.com.au/2007/08/30/identifying-the-distribution-of-a-linux-system/
Иногда мне нужно получить доступ к некоторым серверам под управлением Linux (или, возможно, другому Unix-подобному SO), но я не знаю, как проверить, какой distribution используется на сервере (бывают случаи, когда даже "ответственный" человек для сервера не знает).
Есть ли простой и надежный способ обнаружить, что он является однородным и согласованным во всех них?
lsb_release -i
может работать для вас.
Более подробная информация доступна с помощью lsb_release -a
Некоторое обсуждение на http://etbe.coker.com.au/2007/08/30/identifying-the-distribution-of-a-linux-system/
cat /etc/*release
Большинство дистрибутивов помещают файл выпуска в /etc/
(например, /etc/redhat-release
, /etc/gentoo-release
и т.д.), который обычно имеет номер версии вашего дистрибутива в нем.
Это, досадно, сложнее, чем кажется.
Для систем 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.
Вы должны спросить себя, действительно ли вам нужно знать, какой дистрибутив используется (возможно, потому, что вы хотите создать пакет, специфичный для этого дистрибутива). Во многих других случаях это гораздо лучшая идея, просто проверить и посмотреть, есть ли функции, которые вам нужны, или нет. Это может выглядеть намного больше, потому что вы должны тестировать каждую функцию один за другим, но таким образом ваше программное обеспечение становится намного более гибким.
В моем .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 год уже давно). Кажется, что это больше не работает для систем, которые у меня сейчас есть.
Я обнаружил, что /etc/issue обычно имеет что-то о используемом дистрибутиве.
Но я не знаю о его доступности для всех дистрибутивов.
файловая система proc: каталог в Linux со всей информацией об аппаратном уровне. Поэтому просто введите
cd /proc/
Там вы найдете золотую жилу информации, хранящуюся в текстовом файле, для всей произвольной информации о системе.
Существуют различные команды, которые вы можете использовать для проверки того, какой дистрибутив используется. Здесь я упоминаю только 5 из них.
lsb_relase -a
lsb_release
предоставляет информацию, специфичную для распространения. В то время как -a
отображает всю информацию о дистрибутиве. Вы также можете использовать -d
, который показывает только описание.
uname -a
uname
также предоставляет системную информацию. Если -a
отобразить всю информацию. Вы можете использовать man uname
для других параметров.
cat/etc/* release
Вы также можете использовать команду cat
для распечатки всей информации о выпуске из папки и т.д.. Эта команда действительно читает файлы lsb-release и os-release из папки /etc.
cat/etc/issue
Эта команда считывает файл проблема из папки /etc.
cat/proc/version
Эта команда считывает файл версия из папки /proc. /proc содержит информацию о системном процессе.
Вы можете использовать "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
uname -r
должен печатать текущую версию ядра (по крайней мере, для Linux, не знаю если это то же самое для BSD или других). Это не то же самое, что дистрибутив, но версия ядра часто включает имя дистрибутива, если оно настроено под заказ, например "2.6.27-gentoo-r1" или что-то в этом роде.
Init часто печатает что-то при загрузке, но это не очень хорошо, когда он работает.
В противном случае, насколько я знаю, нет ничего универсального.
... это довольно профессиональный скрипт BASH, в котором должна быть вся информация, которую вы можете пожелать.
(Отказ от ответственности: я не связан с ним)
neofetch --stdout | grep '^OS: ' | sed -e 's/OS:[[:space:]]\+//'
может дать:
Debian GNU/Linux 11 (яблочко) x86_64
но есть гораздо больше информации.
Опции:
системный пакет neofetch
Если это не доступно, либо посмотрите официальные инструкции по установке
или для одноразового использования - если у вас есть вера и подключение к интернету - вы можете использовать:
wget 'https://raw.githubusercontent.com/dylanaraps/neofetch/master/neofetch' \
&& bash neofetch --stdout \
&& rm neofetch
Попробуйте uname -a