運用作業中に急に確認が必要になる場面、誰でも一度は経験があるはずです。
/proc/cpuinfoを直接catすれば情報は取れますが、出力が長くて読みにくい。
そんなときに使いたいのが lscpuコマンド です。
この記事では、lscpuコマンドの基本的な使い方から、出力の読み方、仮想化環境での活用、
スクリプトへの組み込み方法まで体系的に解説します。
実行環境:RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。
この記事のポイント
・lscpuコマンド1本でコア数・スレッド数が一目でわかる
・「CPU(s)」と「Thread(s) per core」の掛け算でスレッド総数を確認できる
・-e オプションで各CPUの状態をテーブル形式で確認できる
・--json オプションでスクリプトへの組み込みにも対応している
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
lscpuとは何か?/proc/cpuinfoとの違い
lscpuはLinuxカーネルが管理するCPU情報を人間が読みやすい形式で表示するコマンドです。util-linuxパッケージに含まれており、主要なLinuxディストリビューションには最初からインストールされています。
同じCPU情報を取得するコマンドとして /proc/cpuinfo を読む方法もありますが、両者には明確な使い分けがあります。
| 比較項目 | lscpu | /proc/cpuinfo |
|---|---|---|
| 出力の見やすさ | 構造化されて読みやすい | ローレベルで長大 |
| コア数の把握 | 一目でわかる | processor行を数える必要がある |
| スクリプト活用 | --json オプションで構造化出力 | grepやawkで加工が必要 |
| キャッシュ情報 | L1d / L1i / L2 / L3 を分けて表示 | cache size のみ |
| 仮想化情報 | Hypervisor / 仮想化方式を明示 | flags欄から自分で判断 |
lscpuコマンドの基本的な使い方
1. インストール確認
lscpuはutil-linuxパッケージに含まれているため、ほとんどの環境で追加インストール不要です。念のため確認する場合は以下のコマンドを実行してください。
# RHEL / CentOS / Rocky Linux の場合 $ rpm -q util-linux # Ubuntu / Debian の場合 $ dpkg -l util-linux
# RHEL系 $ sudo dnf install util-linux # Ubuntu系 $ sudo apt install util-linux
2. 基本実行と出力の読み方
オプションなしで実行するだけで、CPUの主要情報が一覧表示されます。$ 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): 8 On-line CPU(s) list: 0-7 Vendor ID: GenuineIntel BIOS Vendor ID: Intel Model name: Intel(R) Xeon(R) E-2234 CPU @ 3.60GHz BIOS Model name: Intel(R) Xeon(R) E-2234 CPU @ 3.60GHz BIOS CPU family: 6 CPU family: 6 Model: 158 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 Stepping: 13 CPU max MHz: 4800.0000 CPU min MHz: 800.0000 BogoMIPS: 7200.00 L1d cache: 128 KiB (4 instances) L1i cache: 128 KiB (4 instances) L2 cache: 1 MiB (4 instances) L3 cache: 8 MiB (1 instance)
| フィールド名 | 意味 | 上記の例での値 |
|---|---|---|
| Architecture | CPUアーキテクチャ(x86_64/aarch64など) | x86_64 |
| CPU(s) | 論理CPU数(全スレッド数) | 8 |
| Thread(s) per core | 1コアあたりのスレッド数 | 2(ハイパースレッディング有効) |
| Core(s) per socket | 1ソケットあたりの物理コア数 | 4 |
| Socket(s) | 物理CPUソケット数 | 1 |
| CPU max MHz | 最大動作クロック周波数 | 4800 MHz |
| L1d cache | L1データキャッシュ容量 | 128 KiB × 4コア |
| L3 cache | L3共有キャッシュ容量 | 8 MiB |
論理CPU数 = ソケット数 × コア数 / ソケット × スレッド数 / コア
上の例では 1 × 4 × 2 = 8 が CPU(s) の値と一致します。
よく使うオプションと実務活用
1. -e オプション:各CPU論理コアの状態を確認する
サーバーの物理コアと論理コアの対応関係を確認したい場合に使います。特にNUMAアーキテクチャのサーバーや、コアをオフラインにしている環境で役立ちます。
$ lscpu -e CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ MHZ 0 0 0 0 0:0:0:0 yes 4800.0000 800.0000 3600.0000 1 0 0 1 1:1:1:0 yes 4800.0000 800.0000 3600.0000 2 0 0 2 2:2:2:0 yes 4800.0000 800.0000 3600.0000 3 0 0 3 3:3:3:0 yes 4800.0000 800.0000 3600.0000 4 0 0 0 0:0:0:0 yes 4800.0000 800.0000 3600.0000 5 0 0 1 1:1:1:0 yes 4800.0000 800.0000 3600.0000 6 0 0 2 2:2:2:0 yes 4800.0000 800.0000 3600.0000 7 0 0 3 3:3:3:0 yes 4800.0000 800.0000 3600.0000
これがハイパースレッディング(Intel HT)の仕組みです。
dmidecode でハードウェア情報を取得するとCPUの詳細な物理情報も合わせて確認できます。
2. --json オプション:シェルスクリプトへの組み込み
スクリプトでCPU数を動的に取得したい場合は --json オプションが便利です。# CPU数を変数に代入する(jqコマンドを使う方法) $ CPU_COUNT=$(lscpu --json | jq -r '.lscpu[] | select(.field=="CPU(s):") | .data') $ echo "CPU数: ${CPU_COUNT}" CPU数: 8 # jqが使えない環境ではgrepとawkで代替 $ CPU_COUNT=$(lscpu | grep "^CPU(s):" | awk '{print $2}') $ echo "CPU数: ${CPU_COUNT}" CPU数: 8
3. 特定フィールドだけを抽出する
「コア数だけ知りたい」「アーキテクチャだけ確認したい」という場面では grep と組み合わせて使います。# アーキテクチャを確認 $ lscpu | grep "^Architecture" Architecture: x86_64 # 物理コア数を確認 $ lscpu | grep "^Core(s) per socket" Core(s) per socket: 4 # 論理CPU数(スレッド総数)を確認 $ lscpu | grep "^CPU(s):" CPU(s): 8 # ソケット数を確認 $ lscpu | grep "^Socket(s)" Socket(s): 1
仮想化環境でのlscpu活用
クラウドやVMware上の仮想マシンでlscpuを実行すると、仮想化に関する情報も表示されます。この情報はトラブルシュート時の前提確認として重要です。
# KVM上の仮想マシン(AWS EC2など)での実行例 $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0-1 Vendor ID: GenuineIntel Model name: Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 Virtualization: VT-x Hypervisor vendor: KVM ← 仮想化基盤を示す Virtualization type: full ← 完全仮想化であることを示す
| フィールド | 表示される値の例 | 意味 |
|---|---|---|
| Hypervisor vendor | KVM / VMware / Microsoft / Xen | 仮想化基盤の種類 |
| Virtualization type | full / para | 完全仮想化か準仮想化か |
| Virtualization | VT-x / AMD-V | CPUの仮想化支援機能 |
トラブルシュート・エラー対処
「lscpu: コマンドが見つかりません」が表示された場合
util-linuxパッケージがインストールされていない可能性があります。最小インストール構成のコンテナイメージなどで発生しやすいエラーです。
# RHEL / Rocky Linux $ sudo dnf install util-linux # Ubuntu / Debian $ sudo apt install util-linux # インストール確認 $ which lscpu /usr/bin/lscpu
L3キャッシュが表示されない場合
一部のARM系プロセッサや組み込みCPUでは、L3キャッシュを持たない設計のものがあります。「L3 cache:」行が表示されない場合はL3キャッシュなしの構成です。
dmidecode でハードウェア情報を取得すれば、さらに詳細なメモリ・チップセット情報を確認できます。
CPU(s)の数が思ったより少ない場合
onlineになっていないCPUが存在する可能性があります。# オンライン・オフラインのCPU状態を確認 $ lscpu | grep -E "CPU\(s\)|On-line|Off-line" CPU(s): 8 On-line CPU(s) list: 0-6 Off-line CPU(s) list: 7 ← CPU 7がオフラインになっている # 特定CPUをオンラインに戻す(root権限が必要) $ echo 1 | sudo tee /sys/devices/system/cpu/cpu7/online 1
本記事のまとめ
lscpuコマンドはLinuxサーバーのCPU情報を素早く正確に把握するための標準ツールです。/proc/cpuinfoを手で読み解くより格段に効率的で、スクリプト活用にも向いています。
mount コマンドの使い方やsystemd-analyze で起動時間計測などのシステム管理コマンドと組み合わせて、サーバー状態の全体像を把握する習慣をつけると現場対応が速くなります。
| やりたいこと | コマンド |
|---|---|
| CPU全情報を一覧表示する | lscpu |
| 論理CPU数を確認する | lscpu | grep "^CPU(s):" |
| 物理コア数を確認する | lscpu | grep "^Core(s) per socket" |
| 各CPUのコア・スレッド対応を確認する | lscpu -e |
| アーキテクチャを確認する | lscpu | grep "^Architecture" |
| 仮想化基盤の種類を確認する | lscpu | grep "Hypervisor" |
| JSON形式で出力する(スクリプト向け) | lscpu --json |
| CPU数をシェル変数に代入する | lscpu | grep "^CPU(s):" | awk '{print $2}' |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:iotopコマンドでディスクI/Oを使うプロセスを特定する方法|iostatとの違いやインタラクティブ操作も
- 前のページへ:pvs・vgs・lvsコマンドでLVM構成を確認する方法|ディスク容量とPV・VG・LV一覧を把握する
- この記事の属するカテゴリ:Linuxtips・システム管理コマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます