ฉันใช้ RHEL รุ่นใดอยู่


151

จากเชลล์และไม่มีสิทธิ์รูทฉันจะทราบได้อย่างไรว่า Red Hat Enterprise Linux เวอร์ชันใดที่ฉันกำลังใช้งานอยู่

เป็นการดีที่ฉันต้องการรับทั้งรุ่นใหญ่และรุ่นรองเช่น RHEL 4.0 หรือ RHEL 5.1 เป็นต้น

คำตอบ:


154

คุณสามารถใช้lsb_releaseคำสั่งกับลีนุกซ์รุ่นต่างๆได้:

lsb_release -i -r 

สิ่งนี้จะบอกคุณเกี่ยวกับการแจกจ่ายและเวอร์ชั่นและมีความแม่นยำมากกว่าการเข้าถึงไฟล์ที่อาจมีหรือไม่มีการแก้ไขโดยผู้ดูแลระบบหรือแพ็คเกจซอฟต์แวร์ รวมถึงทำงานข้ามหลาย distros

สำหรับ RHEL คุณควรใช้:

cat /etc/redhat-release

5
ไม่พบคำสั่งในกล่อง CentOS 5.4 ของฉัน :(
gbjbaanb

@gbjbaanb: มันแปลกที่ฉันทดสอบมันบนการติดตั้งที่น้อยที่สุด 5.4 ครั้งใหม่และมันใช้งานได้ดี ...
Zypher

26
lsb_release -i -r-bash: lsb_release: ไม่พบคำสั่ง อย่างไรก็ตาม cat /etc/redhat-releaseRed Linux Enterprise Linux Server รีลีส 5.6 (Tikanga)
Tom

7
สำหรับบันทึก: ไม่สามารถใช้การติดตั้งขั้นต่ำ RHEL 6.5 ได้ คำสั่ง lsb_release ไม่พบที่ใดเลย
sborsky

4
lsb_release ไม่ใช่แพ็คเกจที่มีน้ำหนักเบามันดึงใน CUPS เพื่อให้ '/ usr / bin / lp' ซึ่งดึงใน goop แปล PDF บางตัวซึ่งดึงในไลบรารีการเรนเดอร์บางตัว ...
Jens Timmerman

142

คุณสามารถดูเนื้อหาของ / etc / redhat-release ซึ่งจะมีหน้าตาดังนี้:

$ cat /etc/redhat-release 
CentOS release 5.4 (Final)

เนื้อหาต่างกันสำหรับระบบ RHEL ที่แท้จริง เทคนิคนี้ใช้ได้กับอนุพันธ์ RedHat ทั้งหมดรวมถึง CentOS, Fedora และอื่น ๆ


14
นี่คือคำตอบที่เหมาะสมที่สุดสำหรับคำถาม
fsoppelsa

lsb_releaseเป็นสิ่งแรกที่จะลอง แต่เนื่องจากว่าอาจจะไม่ได้ติดตั้งกำลังมองหาที่ไฟล์เป็นแผนบีดี
ลูกไก่

1
@ ลูกไก่ระบุว่าคำถามที่ถามสำหรับการทดสอบสำหรับระบบ Redhat และ lsb_release ไม่ได้ถูกติดตั้งโดยค่าเริ่มต้นในระบบ redhat และ / etc / redhat-release คือแล้ว lsb_release นั้นเห็นได้ชัดว่าไม่ใช่สิ่งแรกที่ต้องลอง!
ลาก่อน

@bye เป็นสิ่งแรกที่ต้องลอง (อย่างน้อยก็ในความคิดของฉัน) คุณมักจะลองทำสิ่งต่าง ๆ ที่ควรจะมีร่วมกันในการแจกแจงก่อนเสมอจากนั้นมีเพียงคุณเท่านั้นที่เปลี่ยนเป็นโซลูชันเฉพาะสำหรับการกระจายสินค้า
Dennis Nolte

25

ฉันชอบใช้ไฟล์ / etc / issue

$ cat /etc/issue

ฉันได้เห็นหลายสถานการณ์ที่ / etc / redhat-release ได้รับการแก้ไขเพื่อให้เป็นไปตามข้อกำหนดความเข้ากันได้ของซอฟต์แวร์ (ตัวอย่างเช่น Dell หรือตัวแทนการจัดการของ HP)


1
/etc/issueยังทำงานบนระบบปฏิบัติการอื่น ๆ เช่น Debian & Ubuntu และทำงานร่วมกับระบบปฏิบัติการ Linux ที่ไม่สอดคล้องกับฐานมาตรฐาน Linux และระบบปฏิบัติการน้ำหนักเบาที่ไม่มีการติดตั้งยูทิลิตี้ lsb *
Stefan Lasiewski

5
สิ่งนี้ไม่น่าเชื่อถือ เห็นได้ชัดว่า/etc/issueมีความหมายที่จะแยกวิเคราะห์โดยagettyซึ่งแทนที่ลำดับการหลบหนีด้วยข้อมูลที่เหมาะสม หากคุณเป็นเพียงแค่catผลที่ได้อาจจะล้นหลาม บน Fedora หนึ่งได้รับFedora release 20 (Heisenbug) Kernel \r on an \m (\l)ซึ่งจะบอกคุณบางสิ่งบางอย่าง แต่ใน RHEL7 \S Kernel \r on an \mหนึ่งเพิ่งได้รับ
David Tonhofer

โปรดทราบว่า/etc/issueอาจถูกแทนที่โดยผู้ดูแลระบบท้องถิ่นและดังนั้นจึงไม่ใช่แหล่งข้อมูลที่เชื่อถือได้
larsks

13

วิธีที่น่าเชื่อถือที่สุดเมื่อ lsb_release ไม่ได้ติดตั้งคือ:

# rpm -q --queryformat '%{VERSION}' redhat-release-server
6Server

# rpm -q --queryformat '%{RELEASE}' redhat-release-server
6.4.0.4.el6

ในการติดตั้งขั้นต่ำlsb_releaseหายไป

ในการทำให้การทำงานกับ Red Hat clones (เครดิตไปที่ความคิดเห็น):

# rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')

หรือเป็นคำสั่งเดียว (แทนที่จะใช้คำสั่ง "rpm" สองอัน):

# rpm -qa --queryformat '%{VERSION}\n' '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)'

ใช้sed/ cutและข้อความอื่น ๆ ที่จัดการเครื่องมือ UNIX เพื่อให้ได้สิ่งที่คุณต้องการ


2
ดูเหมือนว่ามันจะทำงานได้ดีกว่าทั่วไป: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)' sl ใช้สำหรับ Scientific Linux หากคุณรู้ชื่อที่ถูกต้องสำหรับ RHEL อาจจะสร้างความคิดเห็นด้านล่าง คำเตือน - ไม่ผ่านการทดสอบอย่างกว้างขวาง
Dan Pritts

1
ใช่แล้วขอบคุณหนึ่งหมายเหตุ: ใช้งานไม่ได้กับ RHEL Worstation
lzap

One note - สิ่งนี้ทำงานช้ากว่าการแยกวิเคราะห์ / etc / foo-release มาก
Dan Pritts

1
หรือrpm -qa | grep releaseง่ายยิ่งขึ้น
วอร์เรน

6

สมมติว่าเป็น Red Hat จริง ๆ (ไม่ใช่ Centos):

rpm -q redhat-release

หรือเพียงแค่เรียกใช้:

uname -r

และแผนที่เอาท์พุท 2.6.9 ข้าวเมล็ดเป็น RHEL4, 2.6.18 เมล็ดเป็นเมล็ดข้าวเจ้า 5 หากจำเป็นคุณสามารถแมปเวอร์ชันเต็มกับรีลีสการอัปเดตเฉพาะจาก Red Hat (เช่น 2.6.9-89 คือ RHEL5 U4)


1
rpm -q redhat-releaseเพิ่งกลับมาpackage redhat-release is not installedหาฉันและuname -rบอกฉันถึงการปล่อยเคอร์เนล
Mark Booth

โอ้! และเวลานั้นผ่านไปแล้ว RHEL6 จะเป็นอย่างไร RHEL7 ฮัม ... นี่คือคำตอบ: access.redhat.com/articles/3078#RHEL7
mika

3

ฉันชอบhostnamectl:

$ hostnamectl
   Static hostname: xxxxxx.xxx.xxx
         Icon name: computer-server
           Chassis: server
        Machine ID: 3e3038756eaf4c5c954ec3d24f35b13f
           Boot ID: 958452e0088b4191a4ea676ebc90403b
  Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
            Kernel: Linux 3.10.0-862.3.3.el7.x86_64
      Architecture: x86-64

2

ฉันชอบใช้/etc/os-releaseไฟล์ซึ่งอยู่ในรุ่น RPM:

# yum whatprovides /etc/os-release 
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: dl.za.jsdaav.net
 * extras: dl.za.jsdaav.net
 * updates: dl.za.jsdaav.net
centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : base
Matched from:
Filename    : /etc/os-release

centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : @anaconda
Matched from:
Filename    : /etc/os-release

ไฟล์นี้สามารถจัดหาได้ในสคริปต์เช่น:

$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)

น่าสนใจมีประโยชน์ น่าเสียดายที่ไม่ได้แสดงใน RHEL6 ดังนั้นจึงมีมูลค่า จำกัด ในขณะนี้
Dan Pritts

1

หากคุณต้องการได้รับหมายเลขเวอร์ชันต่อไปนี้จะสั้นและง่ายที่สุดเท่าที่ฉันจะหาได้

ทดสอบบน rhel 6.7, rhel 7.2, debian 8.3 และ Ubuntu 14.04:

lsb_release -s -r | cut -d '.' -f 1

สำหรับตัวอย่างที่เป็นประโยชน์สมมติว่าคุณต้องการทดสอบรุ่นสำหรับรุ่นใหญ่และรุ่นรองและทำสิ่งต่าง ๆ ตามนั้น:

#!/bin/bash

major=$(lsb_release -s -r | cut -d '.' -f 1)
minor=$(lsb_release -s -r | cut -d '.' -f 2)

if (( "$major" >= 7 ))
then
  echo "Do stuff, OS major version is $major"
  echo "OS minor version is $minor"
else
  echo "Do other things"
  echo "Your version is $major.$minor"
fi

1

การมาถึงช่วงปลายปีนี้ แต่ฉันสนุกที่จะลองใช้เวอร์ชั่น RHEL บนโหนดระยะไกลหลายแห่ง ดังนั้นหากคุณมีเซิร์ฟเวอร์ที่ใช้รหัสผ่านเดียวกัน (ฉันรู้ฉันรู้ ... ) ที่นี่เป็นวิธีที่รวดเร็วและสกปรกในการตรวจสอบรุ่น RedHat:

สร้างสคริปต์ที่คาดหวัง

vim server-version.sh

คาดว่าสคริปต์จะตรวจสอบรุ่น RedHat ที่สำคัญในหลายโฮสต์ระยะไกล

#!/usr/bin/expect
log_user 0
spawn ssh -l root [lindex $argv 0]
expect "assword:"
send "sUp3rS3cr3tP4ssW0rd^\r"
expect "# "
log_user 1
send "cat /etc/redhat-release\r"
expect "*#"
log_user 0
send "exit\n"

รันสคริปต์สำหรับโหนดทั้งหมดของคุณ

[root@home ~]#
for server in server1 server2 server3 server4 server5; do echo -e "$server: \c"; /root/server-version.sh $server; echo; echo; done;

เอาท์พุต

server1: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server1 ~]#

server2: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server2 ~]#

...

หากคุณกำลังจะทำสิ่งต่าง ๆ ระยะไกลบนเครื่องจำนวนมากฉันขอแนะนำให้ใช้ Ansible มากกว่าสคริปต์ทุบตีที่ทำด้วยมือ
Neil Mayhew

ฉันยังแนะนำไม่ให้เปิดใช้งานการเข้าสู่ระบบรูทผ่าน ssh
Neil Mayhew
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.