Как определить версию CentOS?

125

Как определить версию сервера CentOS без доступа к какому-либо графическому интерфейсу? Я пробовал несколько команд:

# cat /proc/version
Linux version 2.6.18-128.el5 (mockbuild@hs20-bc1-7.build.redhat.com)
(gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) …

# cat /etc/issue
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

но какой из них правильный: 4.1.2-4 из /proc/versionили 5.3 из /etc/issue?

Филипп Блайо
источник

Ответы:

43

Как вы можете видеть /etc/issue, вы используете CentOS 5.3. (Это говорит Red Hat, потому что CentOS основан на источниках RH, и некоторые программы проверяют, /etc/issueчтобы определить используемый дистрибутив; таким образом, они потерпят неудачу, если это будет изменено на CentOS).

Значение 4.1.2-4in /proc/versionотносится к версии gccкомпилятора C, используемой для сборки ядра.

Ренан
источник
3
Я просто добавлю, что вы можете использовать uname -a для определения, совместима ли она с 32 или 64 битами.
Федир Рыхтик
15
На CentOS 7 «cat / etc / issue» выдает gobbledygook: \S Kernel \r on an \m
Urhixidur
9
Правильный ответ должен быть один на h3rrmiller ... cat /etc/*elease. /etc/issueчасто заменяется MOTD / заявлением об отказе от ответственности организации
batfastad
/etc/issueФайл показывает , что RHEL, CentOS не.
Майкл Хэмптон
161

В случаях, подобных CentOS, фактическая версия обычно помещается в /etc/*elease.

cat /etc/*elease

при условии, что этот файл обычно содержит версию всей ОС минус ядро ​​(так как вы можете выбрать, какую из них загрузить). Этот файл будет иметь ту же информацию, что и / etc / issue, но с CentOS вместо RedHat

h3rrmiller
источник
1
Также будет работать релиз cat / etc / *, и вы не пропускаете письмо о том, что ищете;) потому что угадать не всегда легко. *не может быть ничем, всем, одним или несколькими предметами одновременно. Спасибо, я всегда забывал способ получить релизную версию.
erm3nda
9
Причина, по которой я оставляю «R» в том, что в некоторых случаях «R» в «выпуске» пишется с большой буквы.
h3rrmiller
Просто сказать, что делает ls /etc/*eleaseна моей системе дает /etc/centos-release /etc/redhat-release /etc/system-release. Итак, я предполагаю из всего этого, что файлы релизов, как правило, находятся в /etc/*-release- но, возможно, с большой буквы
mwfearnley
2
Это верно. Я нахожу на многих сайтах, что /etc/issueбыло перезаписано MOTD или заявлением об отказе безопасности для использования с Bannerопцией вsshd_config
batfastad
cat /etc/*os-releaseдолжен дать более целенаправленные результаты для CentOS и по-прежнему работать на Ubuntu и других.
webaholik
19

Самый надежный способ нахождения КРУПНАЯ версию CentOS (5 или 6 и т.д.) является:

# rpm -q --queryformat '%{VERSION}' centos-release
6

Для RHEL сделайте это:

# rpm -q --queryformat '%{RELEASE}' redhat-release-server | awk -F. '{print $1}'
7

Единственный переносимый способ узнать версию без lsb_release или других инструментов:

# grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release
6.5
lzap
источник
3
Можно упростить до:cat /etc/redhat-release | grep -o '[0-9]\.[0-9]'
Дэйв Йохансен
1
+1 rpm -q centos-release- это единственный способ получить минорную версию в старых выпусках CentOS5, где / etc / redhat-release содержит только основную версию. Спасибо за подсказку.
PolyTekPatrick
1
Чтобы получить главную версию:cat /etc/redhat-release | grep -oP '(?<= )[0-9]+(?=\.)'
Rockallite
1
Просто любопытно: почему «cat file | grep pattern» вместо «grep pattern file»?
Баррикартер
Хорошо, выкопал это из истории оболочки и смог исправить это. Исправлена.
17
13

Вы можете определить это, просто вызвав следующую команду:

hostnamectl

Который вернется как следующее:

Static hostname: mgbcctli01
     Icon name: computer-vm
       Chassis: vm
    Machine ID: de14d80a0900427894dbcf6137e058e7
       Boot ID: 6865f9839c064bc9be32281d0f262cc8
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
   CPE OS Name: cpe:/o:centos:centos:7
        Kernel: Linux 3.10.0-514.2.2.el7.x86_64
  Architecture: x86-64

Вы также можете использовать, rpmчтобы узнать подробности о версии CentOS:

rpm --query centos-release

Который вернется в моем случае:

centos-release-7-3.1611.el7.centos.x86_64
hd84335
источник
1
hostnamectlвозвращает только основной номер релиза
fpmurphy
1
Правильно, используя rpm, вы можете получить подробную версию
hd84335
6

Правильный путь есть lsb_release -d.

gena2x
источник
8
В CentOS 7: lsb_release: команда не найдена.
Дерексон
yum установить redhat-lsb-core ...
gena2x
7
Конечно, но я имел в виду: я не уверен, стоит ли устанавливать новый пакет, чтобы получить текущую версию.
Дерексон
1
Если вам нужна какая-то команда, способная сделать это в нескольких дистрибутивах, возможно, ее стоит установить.
gena2x
5
# echo "I am running: `cat /etc/redhat-release` (`arch`)"

Выводит следующее:

I am running: CentOS release 6.7 (Final) (x86_64)
Иван Новиков
источник
3

Это может быть найдено в местоположении /etc, в файле os-release. Итак, введите:

cat /etc/os-release
Лихо Джордж
источник
Это было перенесено в CentOS 5 или 6? Если нет, то это в основном полезно в будущем ...
mattdm
CentOS сделал это доступным, начиная с CentOS 7 - я не видел бэкпорт.
webaholik
3

Самый действительно надежный (и короткий) способ получить ОСНОВНУЮ версию CentOS или RHEL:

rpm -E %{rhel}

Даст вам значение, например 6, 7или 8(теперь, когда RHEL 8 отсутствует).

Данила Вершинин
источник
2

Беги, rpm --eval '%{centos_ver}'чтобы получить ОСНОВНУЮ версию Centos.

творог
источник
0

Вот какая-то команда, которую я собрал через гугл, может кому-то помочь:

https://forum.directadmin.com/showthread.php?t=15878

cat /etc/*release*
cat /etc/centos-release

http://www.liquidweb.com/kb/how-to-check-your-centos-version/

cat /etc/redhat-release

https://linuxconfig.org/how-to-check-centos-version

# the later two may need some package to install
rpm --query centos-release
hostnamectl
lsb_release -d

Я создал суть, чтобы записать это тоже.

shellbye
источник