どのバージョンのRHELを使用していますか?


151

シェルからroot権限なしで、実行しているRed Hat Enterprise Linuxバージョンを確認するにはどうすればよいですか?

理想的には、RHEL 4.0やRHEL 5.1などのメジャーリリースバージョンとマイナーリリースバージョンの両方を入手したいです。

回答:


154

このlsb_releaseコマンドは、さまざまなLinuxディストリビューションで使用できます。

lsb_release -i -r 

これにより、ディストリビューションとバージョンがわかり、管理者またはソフトウェアパッケージによって変更されたファイルまたは変更されていないファイルにアクセスするよりも少し正確になります。複数のディストリビューションでの作業も同様です。

RHELの場合、以下を使用する必要があります。

cat /etc/redhat-release

5
CentOS 5.4ボックスでコマンドが見つかりません:(
gbjbaanb 09

@gbjbaanb:それは...私は新規インストール5.4最小限にそれをテストし、それがうまく働いていた奇妙だ
Zypher

26
lsb_release -i -r-bash:lsb_release:コマンドが見つかりません。しかし、 cat /etc/redhat-releaseRed Hat Enterprise LinuxにServerは、5.6(Tikanga)リリース
トム・

7
記録のためだけ:RHEL 6.5の最小インストールでは機能しません。コマンドlsb_releaseが見つかりません。
sborsky

4
lsb_releaseは、いくつかのレンダリングライブラリで引っ張るいくつかのPDF翻訳無神経な人、に引っ張る「は/ usr / binに/ LP」、それは提供するために、CUPSで引っ張る、軽量のパッケージではありません...
イェンスTimmerman

142

/ etc / redhat-releaseの内容を見ると、次のようになります。

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

実際のRHELシステムでは内容が異なります。この手法は、CentOS、Fedoraなどを含むすべてのRedHat派生製品で機能します。


14
これは質問に対する最も適切な答えです。
fsoppelsa 14

lsb_release最初に試してみてください。ただし、ファイルを見てインストールされない可能性があるため、良いプランBです

1
@chicks質問がRedhatシステムのテストを要求し、lsb_releaseがデフォルトでredhatシステムにインストールされておらず、/ etc / redhat-releaseがインストールされている場合、lsb_releaseは明らかに最初に試すべきものではありません!
さようなら

@bye最初に試すのは(少なくとも私の意見では)最初にすべてのディストリビューションに共通するものを最初に試し、それからディストリビューション固有のソリューションに切り替えます。
デニス・ノルティ

25

/ etc / issueファイルを使用することを好みます。

$ cat /etc/issue

ソフトウェアの互換性要件を満たすために/ etc / redhat-releaseが変更された多くの状況を見てきました(たとえば、DellまたはHPの管理エージェント)。


1
/etc/issueDebianやUbuntuなどの他のOSでも動作し、Linux標準ベースに準拠していないLinux OS、およびlsb *ユーティリティがインストールされていない軽量OSで動作します。
ステファンLasiewski 14年

5
これは信頼できません。どうやらagetty/etc/issueによって解析されることを意図しているので、エスケープシーケンスを適切な情報に置き換えます。あなただけの場合、結果は圧倒的かもしれません。Fedoraでは1つが取得されますが、これは何かを伝えますが、RHEL7では1つが取得されます。catFedora release 20 (Heisenbug) Kernel \r on an \m (\l)\S Kernel \r on an \m
デビッドトンホーファー

/etc/issueローカル管理者によって置き換えられる可能性があるため、信頼できる情報源ではないことに注意してください。
ラースク

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クローンでも動作させるには(コメントはコメントを参照):

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

または、単一のコマンドとして(2つの「rpm」が実行されるのではなく):

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

UNIXツールを操作するsed/ cutおよびその他のテキストを使用して、必要なものを取得します。


2
これは、より一般的には機能しているようです: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)' slはScientific Linux用です。他のRHEL再構築の正しい名前がわかっている場合は、以下にコメントしてください。警告-十分にテストされていません。
ダンプリッツ

1
ええ、ありがとう、一つの注意:RHEL Worstationでは動作しません。
lzap

1つの注意-これは、/ etc / foo-releaseの解析よりも実行にかなり時間がかかります。
ダンプリッツ

1
またはrpm -qa | grep releaseさらに簡単です
ウォーレン

6

それが本当にCentOSではなくRed Hatリリースであると仮定すると:

rpm -q redhat-release

または単に実行します:

uname -r

そして、出力をマップします。2.6.9カーネルはRHEL4、2.6.18カーネルはRHEL5です。必要に応じて、フルバージョンをRed Hatの特定の更新リリースにマップできます(つまり2.6.9-89はRHEL5 U4です)。


1
rpm -q redhat-releaseただ戻っpackage redhat-release is not installedてきuname -rて、カーネルのリリースを教えてくれます。
マークブース14

ああ !そして今、その時間が過ぎたので、RHEL6はどうなるでしょうか?RHEL7?ハム...答えはここにあります:access.redhat.com/articles/3078#RHEL7
ミカ

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には存在しないため、現時点では価値が限られています。
ダンプリッツ

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のバージョンを確認するのは簡単で汚れています:

Expectスクリプトを作成する

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

...

多くのマシンでリモート処理を行う場合は、手巻きのbashスクリプトではなくAnsibleを使用することを強くお勧めします。
ニールメイヒュー

また、ssh経由でrootログインを有効にしないことをお勧めします
ニールメイヒュー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.