システムの情報を表示するコマンドです。
システムの基本情報を表示します。
オプション | 説明 |
---|---|
-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タイプに基づいた条件分岐
システムのホスト名を表示または設定します。
オプション | 説明 |
---|---|
-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を使用)
ファイルシステムのディスク使用量を表示します。
オプション | 説明 |
---|---|
-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
- ディスク使用状況をメールで送信
ディレクトリやファイルのディスク使用量を表示します。
オプション | 説明 |
---|---|
-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
- トップレベルディレクトリをサイズ順に表示
システムのメモリ使用状況を表示します。
オプション | 説明 |
---|---|
-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 "%"}'
- メモリとスワップの使用率を表示
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"
- 仮想化技術の情報を表示
システム上のブロックデバイス(ハードディスク、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
- 整形された表形式で表示
システムに接続されている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デバイスの製品名を表示
システムの稼働時間、ユーザー数、ロードアベレージを表示します。
オプション | 説明 |
---|---|
-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}'
- 現在の日付と稼働時間を組み合わせて表示