【超基本】Red Hat系LinuxでOSバージョンを確認するコマンドまとめ|RHELやCentOS対応

Linux

Linuxサーバーを管理していて、こんな場面に遭遇したことはありませんか?

  • 「このサーバーって何のOS?バージョンはいくつ?」
  • 「セキュリティパッチを適用する前にOS情報を確認したい」
  • 「複数のサーバーで異なるバージョンが混在していないか調べたい」
  • 「アプリケーションの動作要件を満たすOSバージョンか確認したい」
  • 「障害対応でサポートに問い合わせる際にOS情報が必要」

特にRed Hat Enterprise Linux(RHEL)やCentOS、Rocky Linux、AlmaLinuxなどのRed Hat系Linuxでは、アップデートやソフトウェア導入のために正確なOS情報を把握することが必須です。

この記事では:

  • Red Hat系LinuxでOSバージョンを確認する主要コマンド
  • それぞれのコマンドの使い分け方と出力例
  • 実際の運用場面での活用方法
  • よくあるトラブルと解決方法
  • スクリプトでの自動化テクニック

を初心者から中級者向けにわかりやすく詳しく解説します。

スポンサーリンク

Red Hat系Linuxの基本知識

主要なRed Hat系ディストリビューション

ディストリビューション特徴主な用途
RHEL(Red Hat Enterprise Linux)商用Linux、有償サポート企業の本番環境、ミッションクリティカル
CentOSRHELのクローン(無償)開発・テスト環境、小規模サーバー
Rocky LinuxCentOS代替(2021年〜)CentOSからの移行先
AlmaLinuxCentOS代替(2021年〜)CentOSからの移行先
Fedora最新技術の実験場開発者向け、デスクトップ用途

なぜOS確認が重要なのか

セキュリティ管理

  • セキュリティパッチの適用計画
  • 脆弱性情報との対応確認
  • EOL(End of Life)情報の把握

システム管理

  • パッケージ管理の方針決定
  • アップグレード計画の策定
  • 互換性確認

運用管理

  • 障害時のサポート問い合わせ
  • ドキュメント作成
  • 監査対応

【基本】/etc/redhat-release を確認

最も定番で確実な方法

Red Hat系Linuxでは、以下のファイルを確認するのが最も確実で一般的な方法です。

cat /etc/redhat-release

出力例とその解説

RHEL 8系の場合

Red Hat Enterprise Linux release 8.6 (Ootpa)

RHEL 9系の場合

Red Hat Enterprise Linux release 9.1 (Plow)

CentOS 7系の場合

CentOS Linux release 7.9.2009 (Core)

Rocky Linux 8系の場合

Rocky Linux release 8.7 (Green Obsidian)

AlmaLinux 9系の場合

AlmaLinux release 9.1 (Lime Lynx)

このコマンドの特徴

メリット

  • Red Hat系なら必ず存在するファイル
  • 1行で簡潔に情報が得られる
  • 古いバージョンから最新まで対応
  • シェルスクリプトで処理しやすい

取得できる情報

  • ディストリビューション名
  • メジャーバージョン・マイナーバージョン
  • コードネーム(リリース名)

スクリプトでの活用例

#!/bin/bash
# OS情報を変数に格納
OS_INFO=$(cat /etc/redhat-release)
echo "現在のOS: $OS_INFO"

# バージョン番号のみを抽出
VERSION=$(cat /etc/redhat-release | sed 's/.* release \([0-9.]*\).*/\1/')
echo "バージョン: $VERSION"

【詳細】/etc/os-release を使ってより詳しく確認

systemd世代の標準的な方法

最近のLinux(systemd導入以降)では、/etc/os-releaseファイルにより構造化された情報が記録されています。

cat /etc/os-release

出力例と各項目の説明

RHEL 8系の詳細出力

NAME="Red Hat Enterprise Linux"
VERSION="8.6 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.6"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.6 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8.6:GA"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.6
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.6"

主要な項目の意味

項目意味用途例
NAMEディストリビューション名表示用の正式名称
VERSIONバージョン(コードネーム付き)人間が読みやすい形式
IDディストリビューションIDスクリプトでの判定
VERSION_IDバージョン番号のみ数値比較用
PRETTY_NAME表示用の完全名称ユーザー向け表示
CPE_NAME標準識別子セキュリティツール連携

スクリプトでの活用

#!/bin/bash
# 特定の値を取得
source /etc/os-release
echo "OS ID: $ID"
echo "バージョン: $VERSION_ID"

# 条件分岐での活用
if [[ "$ID" == "rhel" ]]; then
    echo "Red Hat Enterprise Linuxです"
elif [[ "$ID" == "centos" ]]; then
    echo "CentOS Linuxです"
fi

grepを使った特定項目の抽出

# バージョンIDのみを取得
grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '"'

# OS名のみを取得
grep '^NAME=' /etc/os-release | cut -d'=' -f2 | tr -d '"'

【包括的】hostnamectl でシステム情報をまとめて確認

systemdコマンドの活用

systemd搭載のOS(RHEL 7以降、CentOS 7以降)では、hostnamectlコマンドが非常に便利です。

hostnamectl

詳細な出力例

   Static hostname: web-server-01
         Icon name: computer-server
           Chassis: server
        Machine ID: a1b2c3d4e5f6789012345678901234567890abcd
           Boot ID: 12345678-abcd-ef01-2345-6789abcdef01
  Operating System: Red Hat Enterprise Linux 8.6 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8.6:GA
            Kernel: Linux 4.18.0-372.9.1.el8.x86_64
      Architecture: x86-64
   Hardware Vendor: Dell Inc.
    Hardware Model: PowerEdge R730

取得できる情報の詳細

ホスト情報

  • Static hostname:設定されているホスト名
  • Icon name:システムアイコンの種類
  • Chassis:ハードウェアの種類(server, desktop, laptop等)

システム情報

  • Machine ID:システム固有の識別子
  • Boot ID:現在の起動セッションID
  • Operating System:詳細なOS情報
  • CPE OS Name:標準的なプラットフォーム識別子

ハードウェア情報

  • Kernel:カーネルバージョンとアーキテクチャ
  • Architecture:CPUアーキテクチャ
  • Hardware Vendor:ハードウェアベンダー
  • Hardware Model:ハードウェアモデル

特定の情報のみを取得

# OS情報のみ
hostnamectl | grep "Operating System"

# カーネル情報のみ
hostnamectl | grep "Kernel"

# アーキテクチャのみ
hostnamectl | grep "Architecture"

【補足】その他の有用なコマンド

カーネル情報の確認

基本的なカーネル情報

uname -r

出力例:

4.18.0-372.9.1.el8.x86_64

詳細なシステム情報

uname -a

出力例:

Linux web-server-01 4.18.0-372.9.1.el8.x86_64 #1 SMP Tue Jun 14 05:33:13 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux

lsb_releaseコマンド(利用可能な場合)

一部の環境ではlsb_releaseコマンドも使用できます:

# パッケージのインストールが必要な場合がある
dnf install redhat-lsb-core

# 使用例
lsb_release -a

パッケージマネージャーからの情報取得

dnf/yumからの情報確認

# dnf(RHEL 8以降)
dnf list installed | grep release

# yum(RHEL 7以前)
yum list installed | grep release

rpmコマンドでの確認

rpm -qa | grep release

実践的な活用場面とスクリプト例

複数サーバーの一括確認

SSH経由での一括確認スクリプト

#!/bin/bash
# servers.txtに対象サーバーのIPアドレスまたはホスト名を記載

for server in $(cat servers.txt); do
    echo "=== $server ==="
    ssh "$server" 'cat /etc/redhat-release'
    echo ""
done

条件分岐でのOS判定

バージョン別の処理分岐

#!/bin/bash
source /etc/os-release

case "$VERSION_ID" in
    "7."*)
        echo "RHEL/CentOS 7系です"
        # RHEL 7固有の処理
        ;;
    "8."*)
        echo "RHEL/CentOS 8系です"
        # RHEL 8固有の処理
        ;;
    "9."*)
        echo "RHEL 9系です"
        # RHEL 9固有の処理
        ;;
    *)
        echo "未対応のバージョンです: $VERSION_ID"
        ;;
esac

システム情報の定期レポート

詳細なシステム情報取得スクリプト

#!/bin/bash
echo "===== システム情報レポート ====="
echo "実行日時: $(date)"
echo ""

echo "--- OS情報 ---"
cat /etc/redhat-release
echo ""

echo "--- 詳細OS情報 ---"
source /etc/os-release
echo "名前: $PRETTY_NAME"
echo "ID: $ID"
echo "バージョン: $VERSION_ID"
echo ""

echo "--- カーネル情報 ---"
uname -r
echo ""

echo "--- アップタイム ---"
uptime
echo ""

echo "--- CPU情報 ---"
grep "model name" /proc/cpuinfo | head -1 | cut -d':' -f2
echo ""

echo "--- メモリ情報 ---"
free -h | head -2

よくあるトラブルと解決方法

ファイルが存在しない場合

問題:/etc/redhat-releaseが見つからない

原因

  • Red Hat系以外のLinux
  • ファイルが誤って削除されている
  • 非標準的なインストール

解決方法

# 他の方法で確認
cat /etc/os-release
hostnamectl
lsb_release -a

権限不足でアクセスできない場合

問題:Permission denied

解決方法

# sudoを使用
sudo cat /etc/redhat-release

# または管理者権限での実行
su -
cat /etc/redhat-release

古いシステムでの対応

RHEL 6以前やCentOS 6以前

# /etc/redhat-releaseは存在するが、/etc/os-releaseは存在しない
cat /etc/redhat-release

# システム情報の取得
cat /etc/issue
uname -a

応用:監視とオートメーション

NagiosやZabbixでの監視

OS情報を含む監視スクリプト

#!/bin/bash
# 監視システム用のOS情報取得

OS_INFO=$(cat /etc/redhat-release 2>/dev/null || echo "Unknown")
echo "OS_INFO=$OS_INFO"

if [[ -f /etc/os-release ]]; then
    source /etc/os-release
    echo "VERSION_ID=$VERSION_ID"
fi

Ansibleでの自動収集

Ansible playbook例

---
- name: Gather OS information
  hosts: redhat_servers
  tasks:
    - name: Get RedHat release info
      slurp:
        src: /etc/redhat-release
      register: redhat_release

    - name: Display OS info
      debug:
        msg: "{{ redhat_release.content | b64decode }}"

まとめ:Red Hat系LinuxのOS確認をマスターしよう

Red Hat系Linux(RHEL, CentOS, Rocky, AlmaLinux)でOSバージョンを確認する方法のポイント:

  • 基本確認cat /etc/redhat-release で手軽に確認
  • 詳細確認cat /etc/os-release で構造化された情報を取得
  • 包括確認hostnamectl でシステム全体の情報を把握
  • 用途別活用:スクリプトや監視システムでの自動化

使い分けの指針

日常的な確認

# 手軽な確認
cat /etc/redhat-release

# 詳しい情報が必要な場合
hostnamectl

スクリプトでの自動化

# 構造化されたデータが必要
source /etc/os-release
echo $VERSION_ID

# シンプルな確認
cat /etc/redhat-release

トラブルシューティング

# 複数の方法で確認
cat /etc/redhat-release
cat /etc/os-release
uname -a
hostnamectl

今日から始める3ステップ

  1. 基本コマンド習得:まずcat /etc/redhat-releaseを覚える
  2. 詳細確認/etc/os-releasehostnamectlを使い分ける
  3. 自動化:シェルスクリプトで複数サーバーの情報を効率的に収集

コメント

タイトルとURLをコピーしました