Linuxシステム情報コマンド解説

システム情報コマンド

システムの情報を表示するコマンドです。

uname - システム情報の表示

システムの基本情報を表示します。

オプション 説明
-a すべての情報を表示
-s カーネル名を表示
-n ネットワークノードのホスト名を表示
-r カーネルリリース番号を表示
-v カーネルバージョンを表示
-m マシンのハードウェア名を表示
-p プロセッサの種類を表示
-o オペレーティングシステムを表示

例:

uname -a - すべてのシステム情報を表示
uname -r - カーネルリリース番号を表示
uname -o - オペレーティングシステムを表示
uname -a | awk '{print $3}' - カーネルバージョンのみを抽出
echo "Kernel: $(uname -r)" - シェルスクリプト内でカーネルバージョンを表示
uname -m | grep -q "x86_64" && echo "64-bit system" || echo "32-bit system" - システムのアーキテクチャを判定
uname -a | grep -i "ubuntu" - Ubuntuシステムかどうかを確認
uname -a > system_info.txt - システム情報をファイルに保存
if [ "$(uname)" = "Linux" ]; then echo "This is Linux"; fi - OSタイプに基づいた条件分岐

hostname - ホスト名の表示・設定

システムのホスト名を表示または設定します。

オプション 説明
-f 完全修飾ドメイン名(FQDN)を表示
-i ホストのIPアドレスを表示
-d DNSドメイン名を表示

例:

hostname - ホスト名を表示
hostname -f - 完全修飾ドメイン名を表示
sudo hostname new-hostname - ホスト名を一時的に変更(再起動後は元に戻る)
hostname -I - システムのすべてのIPアドレスを表示
hostname | tr '[:lower:]' '[:upper:]' - ホスト名を大文字で表示
echo "Current host: $(hostname)" - シェルスクリプト内でホスト名を表示
hostname -i | grep -q "127.0.0.1" && echo "Localhost configuration detected" - localhostの設定を確認
ping -c 1 $(hostname) - 自ホストに対してpingを実行
ssh user@$(hostname -f) - 自ホストにSSH接続(FQDNを使用)

df - ディスク使用量の表示

ファイルシステムのディスク使用量を表示します。

オプション 説明
-h 人間が読みやすい形式で表示(KB, MB, GBなど)
-T ファイルシステムの種類も表示
-i iノード情報を表示
-a すべてのファイルシステムを表示(0サイズのものも含む)

例:

df -h - 人間が読みやすい形式でディスク使用量を表示
df -h /home - 特定のマウントポイントのディスク使用量を表示
df -hT - ファイルシステムの種類も含めて表示
df -h | grep -v "tmpfs" | sort -k 5 -r - 一時ファイルシステムを除外し、使用率の高い順にソート
df -h | awk '$5 > "80%" {print $0}' - 使用率が80%を超えるファイルシステムのみを表示
df -i | grep -v "tmpfs" - 一時ファイルシステムを除外してiノード使用状況を表示
df -h | grep "^/dev" | awk '{total += $2; used += $3} END {print "Total: " total "GB, Used: " used "GB"}' - 全ディスクの合計容量と使用量を計算
df -h --output=source,size,used,avail,pcent | grep -v "tmpfs" - 特定の列のみを表示
watch -n 5 "df -h | grep /dev/sda" - 特定のディスクの使用状況を5秒ごとに監視
df -h | mail -s "Disk Usage Report $(date +%F)" admin@example.com - ディスク使用状況をメールで送信

du - ディレクトリサイズの表示

ディレクトリやファイルのディスク使用量を表示します。

オプション 説明
-h 人間が読みやすい形式で表示(KB, MB, GBなど)
-s 指定したディレクトリの合計サイズのみを表示
-a すべてのファイルとディレクトリのサイズを表示
-c 合計を表示
--max-depth=N 指定した深さまでのディレクトリのみを表示

例:

du -h - カレントディレクトリとサブディレクトリのサイズを表示
du -sh /home/user - 指定したディレクトリの合計サイズのみを表示
du -h --max-depth=1 / - ルートディレクトリ直下のディレクトリサイズを表示
du -h --max-depth=1 | sort -hr - サブディレクトリをサイズの大きい順にソート
du -h --max-depth=1 | grep "[0-9]G\b" - サイズがGB単位のディレクトリのみを表示
find . -type f -name "*.log" | xargs du -ch - すべてのログファイルのサイズと合計を表示
du -sh /var/* 2>/dev/null | sort -hr | head -n 5 - /var内の最も大きい5つのディレクトリを表示(エラーを無視)
du -h --time /home/user | sort -r - 最終変更日時も含めてサイズ順に表示
du -h --exclude="*.bak" --max-depth=2 /home - バックアップファイルを除外してディレクトリサイズを表示
du -b | sort -n | awk '{printf "%.3f MB: %s\n", $1/(1024*1024), $2}' | tail - 最も大きいディレクトリをMB単位で表示
for i in /*; do if [ -d "$i" ]; then du -sh "$i"; fi; done | sort -hr - トップレベルディレクトリをサイズ順に表示

free - メモリ使用量の表示

システムのメモリ使用状況を表示します。

オプション 説明
-h 人間が読みやすい形式で表示(KB, MB, GBなど)
-m メガバイト単位で表示
-g ギガバイト単位で表示
-t 合計の行を表示
-s N N秒ごとに情報を更新して表示(継続的に監視)

例:

free -h - 人間が読みやすい形式でメモリ使用量を表示
free -m - メガバイト単位でメモリ使用量を表示
free -s 5 - 5秒ごとにメモリ使用量を更新して表示
free -m | awk 'NR==2{printf "Memory Usage: %s/%s MB (%.2f%%)\n", $3,$2,$3*100/$2 }' - メモリ使用率をパーセンテージで表示
free -m | grep Mem | awk '{print "Used: " $3 "MB, Free: " $4 "MB, Available: " $7 "MB"}' - 使用中、空き、利用可能なメモリを抽出
watch -n 1 'free -m | grep "Mem\|Swap"' - メモリとスワップの使用状況を1秒ごとに監視
free -b | grep "Mem:" | awk '{printf "%.2f GB\n", $2/(1024*1024*1024)}' - 合計メモリをGB単位で表示
free -m > memory_$(date +%Y%m%d_%H%M%S).log - メモリ使用状況をタイムスタンプ付きのログファイルに保存
for i in {1..10}; do free -m | grep Mem; sleep 5; done - 5秒間隔で10回メモリ使用状況を記録
free -m | awk '/Mem:/ {print "Memory used: " 100*$3/$2 "%"} /Swap:/ {print "Swap used: " 100*$3/$2 "%"}' - メモリとスワップの使用率を表示

lscpu - CPU情報の表示

CPUのアーキテクチャ情報を表示します。

オプション 説明
-e 拡張された読みやすい形式で表示
-a オンラインとオフラインの両方のCPUを表示
-J JSON形式で出力

例:

lscpu - CPU情報を表示
lscpu -e - 拡張された形式でCPU情報を表示
lscpu | grep -E "^CPU\(s\)|Core|Socket|Model name" - CPUの主要情報のみを抽出
lscpu -p | grep -v "^#" | wc -l - 利用可能なCPUコア数をカウント
lscpu | grep "MHz" | awk '{print $NF " MHz"}' - CPUの動作周波数を抽出
lscpu -J | jq - CPU情報をJSON形式で整形して表示
lscpu | grep -i cache | sort - キャッシュ情報を抽出してソート
lscpu -p=CPU,CORE,SOCKET | grep -v "^#" - CPU、コア、ソケットの関係を表示
lscpu | awk -F: '/Model name/ {print $2}' | sed 's/^ *//' - CPUモデル名のみを抽出して先頭の空白を削除
lscpu | grep -i "virt" | grep -i "tech" - 仮想化技術の情報を表示

lsblk - ブロックデバイスの表示

システム上のブロックデバイス(ハードディスク、SSD、USBドライブなど)を表示します。

オプション 説明
-a すべてのデバイスを表示
-f ファイルシステム情報を表示
-m マウントポイント情報を含める
-o NAME,SIZE,... 表示する列を指定

例:

lsblk - ブロックデバイスを表示
lsblk -f - ファイルシステム情報を含めて表示
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT - 特定の列のみを表示
lsblk -d | grep -v "loop" - ディスクのみを表示(ループデバイスを除外)
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT | grep "disk\|part" | sort -k 2 -hr - ディスクとパーティションをサイズ順に表示
lsblk -J | jq - ブロックデバイス情報をJSON形式で整形して表示
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID | grep -v "^loop" - UUIDを含む詳細情報を表示(ループデバイスを除外)
lsblk -o NAME,SIZE,RO,RM,MOUNTPOINT | grep "1$" | grep "^sd" - リムーバブルなSDデバイスを検索
lsblk -b | awk '$4=="0" && $6=="disk" {sum+=$3} END {print sum/1024/1024/1024 " GB"}' - 全ディスクの合計容量をGB単位で計算
lsblk -o NAME,SIZE,MOUNTPOINT | grep -v "^loop" | awk 'NR>1 {print}' | column -t - 整形された表形式で表示

lsusb - USB デバイスの表示

システムに接続されているUSBデバイスを表示します。

オプション 説明
-v 詳細情報を表示
-t USBデバイスのツリー構造を表示
-d [vendor]:[product] 特定のベンダーとプロダクトIDのデバイスのみを表示

例:

lsusb - USBデバイスの一覧を表示
lsusb -v - 詳細情報を表示
lsusb -t - ツリー構造で表示
lsusb | grep -i "storage" - ストレージデバイスを検索
lsusb -v | grep -A 5 -i "keyboard" - キーボードデバイスの詳細情報を表示
lsusb | awk '{print $6, $7, $8, $9, $10, $11}' - デバイス名のみを抽出
lsusb -v | grep -i "bcdusb" | sort - デバイスのUSBバージョンを抽出してソート
lsusb | cut -d' ' -f6 | sort | uniq -c - ベンダーごとのデバイス数をカウント
lsusb -v 2>/dev/null | grep -i "power" | grep -i "ma" - デバイスの電力消費情報を表示
for dev in $(lsusb | awk '{print $2":"$4}' | sed 's/://' | sed 's/://'); do lsusb -D /dev/bus/usb/$dev | grep -i product; done - すべてのUSBデバイスの製品名を表示

uptime - システム稼働時間と負荷の表示

システムの稼働時間、ユーザー数、ロードアベレージを表示します。

オプション 説明
-p きれいな形式で稼働時間を表示
-s システムが起動した日時を表示

例:

uptime - 稼働時間とロードアベレージを表示
uptime -p - 読みやすい形式で稼働時間を表示
uptime -s - システムの起動日時を表示
uptime | awk '{print $3, $4}' | sed 's/,//' - 稼働時間のみを抽出
uptime | awk '{print $10, $11, $12}' - ロードアベレージのみを抽出
watch -n 5 uptime - 5秒ごとに稼働時間とロードアベレージを監視
uptime | awk '{print $10}' | sed 's/,//' | awk '{if ($1 > 1.0) print "High load: " $1; else print "Normal load: " $1}' - 1分間のロードアベレージを評価
echo "System has been up since $(uptime -s)" - 起動日時を整形して表示
for i in {1..12}; do uptime | awk '{print $10}' | tr -d ','; sleep 5; done - 5秒間隔で12回ロードアベレージを記録
uptime > uptime_$(date +%Y%m%d_%H%M%S).log - 稼働時間情報をタイムスタンプ付きのログファイルに保存
uptime | awk '{print $3, $4, $5}' | sed 's/,//g' | awk -v d="$(date +%F)" '{print d, $0}' - 現在の日付と稼働時間を組み合わせて表示