Як визначити версію 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-4В /proc/versionвідноситься до версії gccкомпілятора C , використовуваному для збірки ядра.


3
Я просто додам, що ви могли б використовувати unme -a для виявлення, якщо це 32 або 64 біт сумісний.
Федір РИХТИК

15
У CentOS 7 "кішка / тощо / випуск" дає гоблік: \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


1
випуск cat / etc / * також буде працювати, і ви не опускаєте листа того, що шукаєте;), тому що elease не завжди легко здогадатися. *не може бути нічого, все, один або кілька предметів одночасно. Дякую, я завжди забував спосіб отримати версію випуску.
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

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 file pattern"?
barrycarter

Правильно, викопали це з історії оболонок і змогли це виправити. Виправлено.
lzap

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

1
hostnamectlповертає лише основний номер випуску
fpmurphy

1
Правильно, використовуючи rpm, ви можете отримати детальну версію
hd84335

6

Правильний шлях є lsb_release -d.


8
У CentOS 7: lsb_release: Команда не знайдена.
Дерексон

yum встановити redhat-lsb-core ...
gena2x

7
Звичайно, але я мав на увазі: я не впевнений, що цінно встановити новий пакет, щоб отримати поточну версію.
Дерексон

1
Якщо ви хочете отримати якусь команду, яка здатна це зробити в декількох дистрибутивах, можливо, все-таки варто встановити її.
gena2x


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

Ось якась команда, яку я зібрала через Google, може комусь допомогти:

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

Я створив суть, щоб записати це теж.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.