Linux OS確認コマンド完全ガイド – ディストリビューションからカーネルまで全確認方法

Linux

「このサーバー、何のLinuxだっけ?」 「カーネルバージョンは?」 「CentOSの何番?Ubuntu何?」 「32ビット?64ビット?」

システム管理者なら誰もが一度は直面する疑問です。

特に、複数のサーバーを管理していたり、引き継いだシステムだったりすると、正確なOS情報の把握は必須です。

この記事では、LinuxのOS情報を確認するすべてのコマンドを、初心者にも分かりやすく実例付きで解説します。コピペですぐ使える実用的な内容になっています!


スポンサーリンク

クイックリファレンス:目的別コマンド一覧

今すぐ知りたい人のための早見表

# ディストリビューション名とバージョン
cat /etc/os-release

# カーネルバージョン
uname -r

# すべての基本情報
uname -a

# より詳細な情報
hostnamectl

# CentOS/RHEL専用
cat /etc/redhat-release

# Ubuntu/Debian専用
lsb_release -a

これだけ覚えておけば、ほとんどの場面で対応できます!


基本コマンド:これだけは覚えておこう

1. uname コマンド – 最も基本的な確認方法

すべての情報を表示

uname -a

出力例:

Linux server01 5.15.0-91-generic #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

読み方:

Linux           → カーネル名
server01        → ホスト名
5.15.0-91-generic → カーネルバージョン
#101-Ubuntu     → ビルド情報
x86_64          → ハードウェアアーキテクチャ
GNU/Linux       → OS名

オプション別の使い方

# カーネル名のみ
uname -s
# 出力: Linux

# ホスト名のみ
uname -n
# 出力: server01

# カーネルリリース(バージョン)
uname -r
# 出力: 5.15.0-91-generic

# カーネルバージョン(ビルド日時)
uname -v
# 出力: #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023

# マシンアーキテクチャ
uname -m
# 出力: x86_64

# プロセッサタイプ
uname -p
# 出力: x86_64

# ハードウェアプラットフォーム
uname -i
# 出力: x86_64

# OS名
uname -o
# 出力: GNU/Linux

2. /etc/os-release – ディストリビューション情報の決定版

cat /etc/os-release

Ubuntu 22.04 の出力例:

PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

CentOS 7 の出力例:

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

特定の値だけ取得:

# ディストリビューション名
grep "^NAME=" /etc/os-release | cut -d'"' -f2
# 出力: Ubuntu

# バージョン
grep "^VERSION_ID=" /etc/os-release | cut -d'"' -f2
# 出力: 22.04

# コードネーム
grep "^VERSION_CODENAME=" /etc/os-release | cut -d'=' -f2
# 出力: jammy

3. hostnamectl – システム情報の統合確認

hostnamectl

出力例:

   Static hostname: server01
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 3c4a2b1d8e9f7a6b5c4d3e2f1a0b9c8d
           Boot ID: 9f8e7d6c5b4a3291807f6e5d4c3b2a19
    Virtualization: kvm
  Operating System: Ubuntu 22.04.3 LTS
            Kernel: Linux 5.15.0-91-generic
      Architecture: x86-64
   Hardware Vendor: QEMU
    Hardware Model: Standard PC (Q35 + ICH9, 2009)

JSON形式で出力:

hostnamectl --json=pretty

ディストリビューション別の確認方法

Ubuntu/Debian系

lsb_release コマンド

lsb_release -a

出力例:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy

オプション:

# ディストリビューターIDのみ
lsb_release -i
# Distributor ID: Ubuntu

# 説明のみ
lsb_release -d
# Description:    Ubuntu 22.04.3 LTS

# リリース番号のみ
lsb_release -r
# Release:        22.04

# コードネームのみ
lsb_release -c
# Codename:       jammy

# 短縮形式
lsb_release -s -r
# 22.04

古いバージョンの確認

# Debian系の古い方法
cat /etc/debian_version
# 出力例: 11.8

# Ubuntuの場合
cat /etc/lsb-release

RedHat/CentOS/Rocky/AlmaLinux系

専用ファイルの確認

# RedHat系全般
cat /etc/redhat-release
# 出力例: CentOS Linux release 7.9.2009 (Core)

# CentOS専用
cat /etc/centos-release
# 出力例: CentOS Linux release 7.9.2009 (Core)

# Rocky Linux
cat /etc/rocky-release
# 出力例: Rocky Linux release 8.9 (Green Obsidian)

# AlmaLinux
cat /etc/almalinux-release
# 出力例: AlmaLinux release 8.9 (Midnight Oncilla)

システムリリース情報

cat /etc/system-release
# RedHat系のシンボリックリンク

SUSE系

# SUSE Linux
cat /etc/SuSE-release

# openSUSE
cat /etc/os-release | grep PRETTY_NAME
# 出力例: PRETTY_NAME="openSUSE Leap 15.5"

Arch Linux

# Arch Linux
cat /etc/arch-release
# 通常は空ファイル(存在確認のみ)

# バージョン詳細
cat /etc/os-release | grep "PRETTY_NAME"
# 出力例: PRETTY_NAME="Arch Linux"

Alpine Linux

# Alpine Linux
cat /etc/alpine-release
# 出力例: 3.19.0

カーネル情報の詳細確認

カーネルバージョンの確認

# 基本的な確認
uname -r
# 出力例: 5.15.0-91-generic

# より詳細な情報
cat /proc/version
# 出力例: Linux version 5.15.0-91-generic (buildd@lcy02-amd64-046) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38)

カーネルパラメータの確認

# 起動時のカーネルパラメータ
cat /proc/cmdline
# 出力例: BOOT_IMAGE=/boot/vmlinuz-5.15.0-91-generic root=UUID=1234-5678 ro quiet splash

# 現在のカーネル設定
sysctl -a | head -20

カーネルモジュールの確認

# ロード済みモジュール一覧
lsmod | head -10

# 特定モジュールの情報
modinfo ext4

アーキテクチャとビット数の確認

CPUアーキテクチャ

# アーキテクチャ確認
arch
# 出力例: x86_64

# または
uname -m
# 出力例: x86_64

# 詳細なCPU情報
lscpu

lscpu の出力例:

Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         46 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               GenuineIntel
  Model name:            Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz

32ビット or 64ビットの判定

# 方法1: getconf
getconf LONG_BIT
# 出力: 64

# 方法2: file コマンド
file /bin/bash
# 出力例: /bin/bash: ELF 64-bit LSB pie executable, x86-64

# 方法3: dpkg(Debian系のみ)
dpkg --print-architecture
# 出力: amd64

システム情報の総合確認

/proc/version の活用

cat /proc/version

情報の解析:

Linux version 5.15.0-91-generic    # カーネルバージョン
(buildd@lcy02-amd64-046)          # ビルドホスト
(gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0)  # コンパイラ
#101-Ubuntu SMP                    # ビルド番号とタイプ
Tue Nov 14 13:30:08 UTC 2023      # ビルド日時

systemd を使った確認

# systemdのバージョン
systemctl --version

# システムの起動時間
systemd-analyze

# ブート時間の詳細
systemd-analyze blame | head -10

より詳細なハードウェア情報

# DMIデータ(要root権限)
sudo dmidecode -s system-product-name

# PCIデバイス
lspci | head -5

# USBデバイス
lsusb

# ブロックデバイス
lsblk

スクリプト化:便利な確認スクリプト

OS情報を一括取得するスクリプト

#!/bin/bash
# os_info.sh - システム情報一括取得スクリプト

echo "================================================"
echo "            システム情報サマリー"
echo "================================================"

# ホスト名
echo -n "ホスト名: "
hostname

# OS情報
if [ -f /etc/os-release ]; then
    . /etc/os-release
    echo "OS: $PRETTY_NAME"
    echo "ディストリビューション: $ID"
    echo "バージョン: $VERSION_ID"
fi

# カーネル
echo -n "カーネル: "
uname -r

# アーキテクチャ
echo -n "アーキテクチャ: "
uname -m

# ビット数
echo -n "ビット数: "
getconf LONG_BIT

# CPU情報
echo -n "CPU: "
lscpu | grep "Model name" | cut -d':' -f2 | xargs

# メモリ
echo -n "メモリ: "
free -h | awk '/^Mem:/ {print $2}'

# ディスク
echo "ディスク使用状況:"
df -h / | tail -1 | awk '{print "  / : " $3 " / " $2 " (" $5 " 使用)"}'

# 起動時間
echo -n "起動時間: "
uptime -p

echo "================================================"

特定の情報だけを取得する関数

# .bashrc に追加して使える便利関数

# OS名とバージョンを取得
function osinfo() {
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        echo "$NAME $VERSION"
    else
        echo "Unknown OS"
    fi
}

# カーネルバージョンを簡潔に表示
function kernel() {
    uname -r | cut -d'-' -f1
}

# ディストリビューションの判定
function distro() {
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        echo $ID
    elif [ -f /etc/redhat-release ]; then
        echo "redhat"
    elif [ -f /etc/debian_version ]; then
        echo "debian"
    else
        echo "unknown"
    fi
}

トラブルシューティング

コマンドが見つからない場合

lsb_release がない

# Ubuntu/Debian
sudo apt-get install lsb-release

# CentOS/RHEL
sudo yum install redhat-lsb-core

# Fedora
sudo dnf install redhat-lsb-core

hostnamectl がない

# systemdがない古いシステムの場合
# 代替コマンドを使用
hostname
cat /etc/hostname

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

# /etc/os-release がない場合の代替確認
for file in /etc/*-release /etc/*_version; do
    [ -f "$file" ] && echo "$file:" && cat "$file"
done

権限エラーの対処

# dmidecode などroot権限が必要なコマンド
sudo dmidecode -s system-product-name

# または一般ユーザーで確認可能な代替
cat /sys/class/dmi/id/product_name 2>/dev/null || echo "権限不足"

Docker/コンテナ環境での確認

コンテナ内からの確認

# コンテナ環境の検出
if [ -f /.dockerenv ]; then
    echo "Docker コンテナ内です"
fi

# または
if grep -q docker /proc/1/cgroup 2>/dev/null; then
    echo "Docker コンテナ内です"
fi

# コンテナのOS確認
cat /etc/os-release

ホストOSの確認(コンテナから)

# 通常はコンテナからホストOSは確認できません
# セキュリティ上の理由から隔離されています

WSL(Windows Subsystem for Linux)での確認

# WSLバージョンの確認
cat /proc/version | grep -i microsoft

# WSL2かどうかの判定
if grep -qi microsoft /proc/version; then
    if grep -qi "WSL2" /proc/version; then
        echo "WSL2 環境です"
    else
        echo "WSL1 環境です"
    fi
fi

リモートサーバーの確認

SSH経由でのワンライナー確認

# 基本情報を一行で取得
ssh user@server 'cat /etc/os-release | grep PRETTY_NAME'

# 複数サーバーの一括確認
for server in server1 server2 server3; do
    echo -n "$server: "
    ssh $server 'grep PRETTY_NAME /etc/os-release 2>/dev/null | cut -d= -f2'
done

Ansible での確認

# OS情報を収集するPlaybook
---
- hosts: all
  tasks:
    - name: OS情報を収集
      debug:
        msg: "{{ ansible_distribution }} {{ ansible_distribution_version }}"

まとめ:状況に応じた最適なコマンドの選択

Linux のOS情報確認は、用途に応じて適切なコマンドを選ぶことが重要です。

覚えておくべき基本コマンド:

万能型

  • cat /etc/os-release – 最も汎用的
  • uname -a – カーネル中心の情報
  • hostnamectl – systemd環境での統合情報

ディストリビューション別

  • Ubuntu/Debian: lsb_release -a
  • RHEL系: cat /etc/redhat-release
  • 共通: /etc/os-release

詳細情報

  • カーネル: uname -r
  • アーキテクチャ: arch または uname -m
  • ビット数: getconf LONG_BIT

スクリプト化

  • 複数の確認を自動化
  • 定期的な情報収集
  • 障害時の迅速な確認

これらのコマンドをマスターすれば、どんなLinux環境でも迅速に情報を把握できます。

日々の運用に、ぜひ活用してください!

Master Your Linux! 🐧


チートシート(印刷用):

# ===== 基本確認 =====
cat /etc/os-release          # OS情報
uname -a                     # システム全般
hostnamectl                  # 統合情報

# ===== ディストリビューション =====
lsb_release -a              # Ubuntu/Debian
cat /etc/redhat-release     # RHEL/CentOS
cat /etc/alpine-release     # Alpine

# ===== カーネル =====
uname -r                    # バージョン
cat /proc/version           # 詳細情報

# ===== アーキテクチャ =====
arch                        # CPU種別
getconf LONG_BIT           # 32/64ビット
lscpu                      # CPU詳細

コメント

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