Я пытаюсь определить, какая версия Linux-сервера запущена. Я не пытаюсь определить версию ядра - но оцениваю дистрибьютора.
gcc установлен, и в выводе версии написано RedHat
# gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-11)
Означает ли это, что я могу смело предположить, что мой сервер является сервером RedHat. Есть ли лучший - 100% пуленепробиваемый метод, чтобы это выяснить? Также для других версий Linux - не только этот сервер?
Изменить: содержимое /etc/
в случае, если это помогает - но я хотел бы решение, которое работает и для других версий Linux.
# ls /etc/
./ backupmxhosts domainusers host.conf localdomains mailips pam.d/ relayhosts shadow trustedmailhosts
../ bashrc* exim.conf inputrc localtime man.config passwd resolv.conf skipsmtpcheckhosts userdomains
DIR_COLORS cron.deny exim.pl ld.so.cache lynx.cfg mtab profile secondarymx spammeripblocks vimrc
aliases demodomains exim.pl.local* ld.so.conf mail/ my.cnf profile.d/ senderverifybypasshosts sudoers
antivirus.exim demouids group localaliases mailhelo nsswitch.conf protocols services termcap
У меня нет *release
или *version
файлы в/etc/
# ls /etc*release; ls /etc/*version
/bin/ls: /etc/*release: No such file or directory
/bin/ls: /etc/*version: No such file or directory
Я пробовал LSB
# lsb_release -a
LSB Version:
Distributor ID: n/a
Description: (none)
Release: n/a
Codename: n/a
Кроме того - я думаю, что я нахожусь внутри chroot jail
(не совсем уверен, что это такое), что может быть причиной этой проблемы.
Обновлено:
Я думаю, что это делает это для меня. Я думаю, что могу с уверенностью предположить, что я использую цент-ос.
# cat /proc/version
Linux version 2.6.9-103.plus.c4smp (mockbuild@builder10.centos.org) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)) #1 SMP Wed Dec 21 16:17:23 EST 2011
Ответы:
Примеры:
Ubuntu:
Red Hat / CentOS:
Смотрите также Как узнать, какой дистрибутив Linux вы используете?
источник
На большинстве современных дистрибутивов Linux следующая команда предоставит вам информацию:
источник
yum install redhat-lsb-core
./etc/issue
может быть хорошей отправной точкой.Более подробную информацию можно найти, просмотрев информационные файлы для различных дистрибутивов:
Смотрите форум Unix для более подробной информации.
источник
release
илиversion
в моемetc
каталогеЕсли
/etc/issue
отсутствует, может быть один или несколько/etc/*_release
файлов.Например, моя система Ubuntu имеет
/etc/lsb-release
:Система CentOS друга (на основе Red Hat) имеет
/etc/redhat-release
:Я не знаю, насколько это универсально.
источник
release
илиversion
файлы в моем/etc/
cat / etc / issue может ответить на ваш вопрос.
Создатели дистрибутивов не дружат с вами здесь. Во-первых, каждый думает, что это единственный верный путь.
Скорее всего, вместо того, чтобы пытаться понюхать дистрибутив, вам следует более подробно рассмотреть конкретный вопрос, на который вам действительно нужно ответить. Сосредоточьтесь на функциональности, которую вы смотрите, а не на дистрибутиве, предоставляющем его. В конце концов, новая версия дистрибутива может развернуться и пойти в противоположном направлении по любой конкретной оси.
источник
/etc/issue
на моем сервере/etc/issue
может содержать escape-последовательности, такие как\n
и\l
. Чтобы увидеть, что они означают,man 5 issue
иman getty
(/etc/issue
файл предназначен в первую очередь для использованияgetty
). Конечно, владелец системы может редактировать/etc/issue
по какой-то гнусной причине./etc/issue
он должен существовать или содержать какую-либо информацию о поставщике дистрибутива. Обычно так и есть, но я не думаю, что вы можете на это положиться.Используйте
facter
(да, это так, как пишется).Facter является дополнением к марионетке, он предоставляет переменные, которые могут быть запрошены, которые содержат информацию о системе.
Например, вот лишь несколько из десятков переменных, которые может возвращать фактор
Вы могли бы просто запросить факт osfamily, чтобы увидеть, что сервер работает RedHat
Ознакомьтесь с документацией: http://puppetlabs.com/facter
источник
uname -a
Работает всегда для любого смокинга
источник
Не существует единого надежного способа сделать это. Я задал похожий вопрос на unix.se, и лучший способ получить эту информацию - это скрипт, который проверяет различные источники:
Другой вариант действительно используется
gcc --version
, посколькуgcc
он всегда компилируется для конкретного дистрибутива, он будет относительно переносимым. Я настоятельно рекомендую вам прочитать принятый ответ на мой вопрос в U & L, это очень хорошо объясняет ситуацию.источник
Эта команда работала для дистрибутивов на основе Debian и Redhat: Используя фильтр tr, вы конвертируете документ в формат по одному слову на строку, а затем подсчитываете первую строку, содержащую имя дистрибутива.
источник
Thos - лучший метод
источник
/etc
каталог в вопросе. Как уже говорилось в других ответах, это решение не работает для меня./etc/
каталоге, и вы можете видеть, что никакие файлы там не заканчиваютсяrelease