Tôi đang sử dụng phiên bản nào của RHEL?


151

Từ trình bao và không có quyền root, làm cách nào tôi có thể xác định phiên bản Red Hat Enterprise Linux nào tôi đang chạy?

Lý tưởng nhất là tôi muốn có cả phiên bản phát hành chính và phụ, ví dụ: RHEL 4.0 hoặc RHEL 5.1, v.v.

Câu trả lời:


154

Bạn có thể sử dụng lsb_releaselệnh trên các bản phân phối Linux khác nhau:

lsb_release -i -r 

Điều này sẽ cho bạn biết Phân phối và Phiên bản và chính xác hơn một chút so với việc truy cập các tệp có thể hoặc không được sửa đổi bởi quản trị viên hoặc gói phần mềm. Cũng như làm việc trên nhiều distro.

Đối với RHEL, bạn nên sử dụng:

cat /etc/redhat-release

5
không tìm thấy lệnh trên hộp CentOS 5.4 của tôi :(
gbjbaanb

@gbjbaanb: Thật kỳ lạ, tôi đã thử nghiệm nó trên bản cài đặt tối thiểu 5,4 mới và nó hoạt động rất tốt ...
Zypher

26
lsb_release -i -r-bash: lsb_release: không tìm thấy lệnh. Tuy nhiên, cat /etc/redhat-releaseRed Hat Enterprise Linux Server phát hành 5.6 (Tikanga)
Tom

7
Chỉ dành cho bản ghi: Không hoạt động trên cài đặt tối thiểu RHEL 6.5. Lệnh lsb_release không được tìm thấy.
s Harborky

4
lsb_release được không phải là một gói trọng lượng nhẹ, Nó kéo trong CUPS để cung cấp '/ usr / bin / lp', mà kéo trong một số goop pdf dịch, mà kéo trong một số thư viện vẽ ...
Jens Timmerman

142

Bạn có thể xem nội dung của / etc / redhat-phát hành, nó sẽ trông giống như thế này:

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

Các nội dung là khác nhau cho một hệ thống RHEL thực tế. Kỹ thuật này hoạt động trên tất cả các dẫn xuất RedHat, bao gồm cả CentOS, Fedora và các công cụ khác.


14
Đây là câu trả lời thích hợp nhất cho câu hỏi.
fsoppelsa

lsb_releaselà điều đầu tiên để thử, nhưng vì nó có thể không được cài đặt, nhìn vào các tệp là một Kế hoạch B. tốt
gà con

1
@chicks Cho rằng câu hỏi yêu cầu kiểm tra các hệ thống Redhat và lsb_release không được cài đặt theo mặc định trên các hệ thống redhat và / etc / redhat-phát hành, thì rõ ràng lsb_release không phải là điều đầu tiên để thử!
tạm biệt

@bye Đó là điều đầu tiên để thử (ít nhất là theo ý kiến ​​của tôi), bạn luôn thử những điều phổ biến trên tất cả các bản phân phối trước, sau đó chỉ có bạn chuyển sang các giải pháp dành riêng cho phân phối.
Dennis Nolte

25

Tôi thích sử dụng tập tin / etc / vấn đề.

$ cat /etc/issue

Tôi đã thấy nhiều tình huống trong đó / etc / redhat-phát hành đã được sửa đổi để đáp ứng các yêu cầu tương thích phần mềm (ví dụ: các đại lý quản lý của Dell hoặc HP).


1
/etc/issuecũng hoạt động trên các HĐH khác, chẳng hạn như Debian & Ubuntu và hoạt động với các HĐH Linux không tuân thủ Cơ sở Tiêu chuẩn Linux và các HĐH nhẹ không cài đặt tiện ích lsb *.
Stefan Lasiewski

5
Điều này không đáng tin cậy. Rõ ràng /etc/issuelà có nghĩa là được phân tích cú pháp bởi agetty , thay thế các chuỗi thoát bằng thông tin thích hợp. Nếu bạn chỉ catcó nó, kết quả có thể bị áp đảo. Trên Fedora, người ta nhận được Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), điều này cho bạn biết điều gì đó nhưng trên RHEL7, người ta chỉ nhận được \S Kernel \r on an \m.
David Tonhofer

Lưu ý rằng /etc/issuecó thể được thay thế bởi quản trị viên cục bộ và do đó không phải là nguồn thông tin đáng tin cậy.
larsks

13

Cách đáng tin cậy nhất khi lsb_release không được cài đặt là:

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

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

Trên các cài đặt tối thiểu, lsb_releasebị thiếu.

Để làm việc này cũng với bản sao Red Hat (tín dụng đi vào bình luận):

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

Hoặc, dưới dạng một lệnh đơn (thay vì hai "vòng / phút" đang được thực thi):

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

Sử dụng sed/ cutvà văn bản khác thao tác các công cụ UNIX để có được những gì bạn muốn.


2
Điều này dường như hoạt động, nói chung hơn: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)' sl dành cho Khoa học Linux; nếu bạn biết tên đúng cho các bản dựng lại khác của RHEL, có thể bình luận bên dưới. Cảnh báo - không được thử nghiệm rộng rãi.
Dan Pritts

1
Vâng cảm ơn, một lưu ý: không hoạt động với RHEL Worstation.
lzap

Một lưu ý - điều này chạy chậm hơn nhiều so với phân tích cú pháp / etc / foo-phát hành.
Dan Pritts

1
hoặc rpm -qa | grep releasethậm chí còn dễ dàng hơn
warren

6

Giả sử nó thực sự là một bản phát hành Red Hat (không phải Centos):

rpm -q redhat-release

Hoặc chỉ cần chạy:

uname -r

Và lập bản đồ đầu ra. Hạt nhân 2.6.9 là RHEL4, hạt nhân 2.6,18 là RHEL5. Nếu cần, bạn có thể ánh xạ phiên bản đầy đủ tới các bản phát hành cập nhật cụ thể từ Red Hat (tức là 2.6.9-89 là RHEL5 U4).


1
rpm -q redhat-releasechỉ trả lại package redhat-release is not installedcho tôi và uname -rchỉ cho tôi bản phát hành kernel.
Đánh dấu gian hàng

Oh ! Và bây giờ thời gian đã trôi qua, RHEL6 sẽ ra sao? BẠC7? Hum ... Đây là câu trả lời: access.redhat.com/articles/3078#RHEL7
mika

3

Tôi thích 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

Tôi khá thích sử dụng /etc/os-releasetệp trong bản phát hành 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

Tập tin này có thể có nguồn gốc trong các tập lệnh, như:

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

Thú vị, hữu ích. Thật không may, không có mặt trên RHEL6 vì vậy giá trị hạn chế tại thời điểm này.
Dan Pritts

1

Nếu bạn muốn chỉ lấy số phiên bản, phần sau đây ngắn và đơn giản như tôi có thể lấy.

Đã thử nghiệm trên rrc 6.7, rrc 7.2, debian 8.3 và ubfox 14.04:

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

Đối với một ví dụ thực tế, giả sử bạn muốn thử nghiệm phiên bản chính và phân phối nhỏ và thực hiện mọi việc dựa trên điều đó:

#!/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

Một sự xuất hiện muộn này, nhưng tôi đã rất vui khi cố gắng tìm ra phiên bản RHEL trên một số nút từ xa. Vì vậy, nếu bạn có một loạt máy chủ sử dụng cùng một mật khẩu (tôi biết, tôi biết ...) thì đây là một cách nhanh chóng và bẩn thỉu để kiểm tra phiên bản RedHat:

Tạo một kịch bản mong đợi

vim server-version.sh

Tập lệnh mong đợi để kiểm tra phiên bản RedHat chính trên nhiều máy chủ từ xa

#!/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"

Chạy tập lệnh cho tất cả các nút của bạn

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

Đầu ra

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 ~]#

...

Nếu bạn định làm công cụ từ xa trên nhiều máy, tôi thực sự khuyên bạn nên sử dụng Ansible thay vì tập lệnh bash cuộn bằng tay.
Neil Mayhew

Tôi cũng khuyên bạn không nên đăng nhập root qua ssh
Neil Mayhew
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.