Jak ustalić wersję CentOS?

125

Jak ustalić wersję serwera CentOS bez dostępu do jakiegokolwiek interfejsu graficznego? Próbowałem kilka poleceń:

# cat /proc/version
Linux version 2.6.18-128.el5 ([email protected])
(gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) …

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

ale który z nich jest poprawny: 4.1.2-4 z /proc/versionlub 5.3 z /etc/issue?

Philippe Blayo
źródło

Odpowiedzi:

43

Jak widać /etc/issue, używasz CentOS 5.3. (Mówi Red Hat, ponieważ CentOS opiera się na źródłach RH, a niektóre programy sprawdzają, /etc/issueaby zidentyfikować używaną dystrybucję; dlatego nie powiedzie się, jeśli zostanie zmieniona na CentOS).

4.1.2-4W /proc/versiondotyczy wersji gcckompilator wykorzystywane do budowy jądra.

Renan
źródło
3
Dodam tylko, co możesz użyć uname -a do wykrycia, jeśli jest kompatybilny z 32 lub 64 bitami.
Fedir RYKHTIK
15
W CentOS 7 „cat / etc / issue” daje gobbledygook: \S Kernel \r on an \m
Urhixidur
9
Prawidłowa odpowiedź powinna być jedna przez h3rrmiller ... cat /etc/*elease. /etc/issuejest często zastępowany przez MOTD / wyłączenie odpowiedzialności organizacji
batfastad
/etc/issueAkt sprawy wynika, że RHEL, CentOS nie.
Michael Hampton
161

W przypadkach takich jak CentOS zwykle umieszczana jest rzeczywista wersja /etc/*elease.

cat /etc/*elease

przyznany ten plik zwykle zawiera wersję całego systemu operacyjnego minus jądro (ponieważ możesz wybrać, który chcesz załadować). Ten plik będzie zawierał te same informacje co / etc / problem, ale z CentOS zamiast RedHat

h3rrmiller
źródło
1
Wydanie cat / etc / * też będzie działało i nie omijasz litery tego, czego szukasz;), ponieważ nie zawsze łatwo jest zgadnąć. *może być niczym, wszystkim, jednym lub więcej przedmiotami na raz. Dziękuję, zawsze zapominałem o sposobie uzyskania wersji.
erm3nda
9
Powodem, dla którego zostawiam „R” wyłączony, jest to, że w niektórych przypadkach „R” w „release” jest pisane wielką literą.
h3rrmiller
Wystarczy powiedzieć, że robienie ls /etc/*eleasew moim systemie daje /etc/centos-release /etc/redhat-release /etc/system-release. Tak więc domyślam się, że pliki wydania mają tendencję do umieszczania /etc/*-release- ale być może z pewnymi literami.
mwfearnley
2
To jest poprawne. Znajduję w wielu witrynach, które /etc/issuezostały zastąpione MOTD lub zastrzeżeniem bezpieczeństwa do użytku z Banneropcjąsshd_config
batfastad
cat /etc/*os-releasepowinien dać bardziej ukierunkowane wyniki dla CentOS i nadal działać na Ubuntu i innych.
webaholik
19

Najbardziej niezawodnym sposobem znalezienia MAJOR wersję CentOS (5 lub 6 etc) jest:

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

W przypadku RHEL wykonaj to:

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

Jedynym przenośnym sposobem na znalezienie wersji bez lsb_release lub innych narzędzi jest:

# grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release
6.5
lzap
źródło
3
Można uprościć:cat /etc/redhat-release | grep -o '[0-9]\.[0-9]'
Dave Johansen
1
+1 rpm -q centos-releaseto jedyny sposób, w jaki udało mi się znaleźć mniejszą wersję starszych wersji CentOS5, w których / etc / redhat-release zawiera tylko wersję główną. Dzięki za podpowiedź.
PolyTekPatrick
1
Aby uzyskać wersję główną:cat /etc/redhat-release | grep -oP '(?<= )[0-9]+(?=\.)'
Rockallite
1
Ciekawe: dlaczego „plik kota | wzór grep” zamiast „plik wzoru grep”?
barrycarter
Właśnie, wykopałem to z historii powłoki i udało się to naprawić. Naprawiony.
lzap
13

Możesz to ustalić, wywołując następujące polecenie:

hostnamectl

Który zwróci następująco:

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

Możesz także użyć, rpmaby znaleźć szczegółowe informacje o wersji CentOS:

rpm --query centos-release

Który wróci w moim przypadku:

centos-release-7-3.1611.el7.centos.x86_64
hd84335
źródło
1
hostnamectlzwraca tylko główny numer wydania
fpmurphy
1
Zgadza się, używając rpm, możesz uzyskać szczegółową wersję
hd84335
6

Prawidłowy sposób to lsb_release -d.

gena2x
źródło
8
W CentOS 7: lsb_release: Nie znaleziono polecenia.
Dereckson,
mniam zainstalować redhat-lsb-core ...
gena2x
7
Jasne, ale miałem na myśli: nie jestem pewien, czy warto instalować nowy pakiet, aby uzyskać aktualną wersję.
Dereckson,
1
Jeśli potrzebujesz komendy, która może to zrobić w wielu dystrybucjach, nadal warto ją zainstalować.
gena2x
5
# echo "I am running: `cat /etc/redhat-release` (`arch`)"

Wytwarza następujące:

I am running: CentOS release 6.7 (Final) (x86_64)
Ivan Novikov
źródło
3

Można go znaleźć w lokalizacji /etc, w pliku os-release. Więc wpisz:

cat /etc/os-release
Lijo George
źródło
Czy zostało to przeniesione do CentOS 5 lub 6? Jeśli nie, jest to szczególnie przydatne w przyszłości ....
mattdm,
CentOS udostępnił to począwszy od CentOS 7 - nie widziałem backportu.
webaholik
3

Najbardziej naprawdę niezawodny (i krótki) sposób, aby uzyskać wersji głównych albo CentOS lub RHEL jest:

rpm -E %{rhel}

Podaje ci wartość np. 6, 7Lub 8(teraz, gdy RHEL 8 jest niedostępny).

Danila Vershinin
źródło
2

Uruchom, rpm --eval '%{centos_ver}'aby uzyskać MAJOROWĄ wersję centos.

tvorog
źródło
0

Oto niektóre polecenia zebrane przez Google, mogą pomóc komuś:

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

Stworzyłem też istotę, aby to zarejestrować.

shellbye
źródło