จะทราบเวอร์ชั่นของ 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เพื่อระบุ distro ที่ใช้อยู่ดังนั้นพวกเขาจะล้มเหลวหากสิ่งนี้เปลี่ยนเป็น CentOS)

4.1.2-4ใน/proc/versionหมายถึงรุ่นของgccคอมไพเลอร์ C ใช้ในการสร้างเคอร์เนล


3
ฉันจะเพิ่มสิ่งที่คุณสามารถใช้ uname -a เพื่อตรวจจับได้หากรองรับ 32 หรือ 64 บิต
Fedir RYKHTIK

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
Michael Hampton

161

ในกรณีเช่น CentOS /etc/*eleaseรุ่นที่เกิดขึ้นจริงมักจะวางไว้ใน

cat /etc/*elease

การให้ไฟล์นี้มักจะเก็บรุ่นของระบบปฏิบัติการทั้งหมดลบเคอร์เนล (เนื่องจากคุณสามารถเลือกที่จะโหลด) ไฟล์นี้จะมีข้อมูลเช่นเดียวกับ / etc / ปัญหา แต่กับ CentOS แทน RedHat


1
cat / etc / * release ก็ทำงานได้เช่นกันและคุณไม่ได้มองข้ามสิ่งที่คุณกำลังมองหา;) เพราะการหลบหนีไม่ใช่เรื่องง่ายที่จะเดา *สามารถเป็นอะไรก็ได้ทั้งหมดหนึ่งรายการขึ้นไปในเวลา ขอบคุณฉันลืมวิธีรับรุ่นวางจำหน่ายเสมอ
erm3nda

9
เหตุผลที่ฉันออกจาก "R" เป็นเพราะในบางกรณี "R" ใน "release" เป็นตัวพิมพ์ใหญ่
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

วิธีที่เชื่อถือได้มากที่สุดในการหาMAJORรุ่นของ 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]'
Dave Johansen

1
+1 rpm -q centos-releaseเป็นวิธีเดียวที่ฉันยังพบว่าจะได้รับรุ่นรองใน CentOS5 รุ่นเก่าที่ / etc / redhat-release มีรุ่นใหญ่เท่านั้น ขอบคุณสำหรับคำใบ้
PolyTekPatrick

1
เพื่อรับรุ่นใหญ่:cat /etc/redhat-release | grep -oP '(?<= )[0-9]+(?=\.)'
Rockallite

1
แค่อยากรู้: ทำไม "ไฟล์ cat | รูปแบบ grep" แทนที่จะเป็น "รูปแบบไฟล์ grep"
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
ถูกต้องโดยใช้รอบต่อนาทีคุณจะได้รับรายละเอียดรุ่น
hd84335

6

lsb_release -dวิธีที่ถูกต้องคือ


8
บน CentOS 7: lsb_release: ไม่พบคำสั่ง
Dereckson

ยำติดตั้ง redhat-lsb-core ...
gena2x

7
แน่นอน แต่ฉันหมายถึง: ฉันไม่แน่ใจว่ามีค่าที่จะต้องติดตั้งแพคเกจใหม่เพื่อรับเวอร์ชันปัจจุบัน
Dereckson

1
หากคุณต้องการคำสั่งบางอย่างที่สามารถทำได้ในหลาย ๆ ดิสทริบิวชันมันอาจจะคุ้มค่าสำหรับการติดตั้ง
gena2x


3

มันสามารถพบได้ที่สถานที่ภายในแฟ้ม/etc os-releaseดังนั้นพิมพ์:

cat /etc/os-release

สิ่งนี้ย้อนกลับไปยัง CentOS 5 หรือ 6 หรือไม่ ถ้าไม่เป็นเช่นนี้ส่วนใหญ่จะเป็นประโยชน์ต่อไป ....
mattdm

CentOS ทำให้สิ่งนี้พร้อมใช้งานเริ่มต้นด้วย CentOS 7 - ฉันไม่เห็น backport
webaholik

3

วิธีที่เชื่อถือได้อย่างแท้จริง (และสั้น) ในการรับรุ่น MAJOR ของ CentOS หรือ RHEL คือ:

rpm -E %{rhel}

จะทำให้คุณมีค่าเช่น6, 7หรือ8(ตอนที่ 8 RHEL ออก)



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

ฉันสร้างส่วนสำคัญเพื่อบันทึกสิ่งนี้เช่นกัน

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