システム情報の取得
このレッスンで分かること
- SSH 直後の定番は
hostname/uname -a/cat /etc/os-release/uptime- リソース確認は
free -h/df -h/lscpu、availableとUse%が重要指標/proc仮想ファイルとクラウドメタデータも正規ルートとして使える
システム情報の取得 とは
Linuxのシステム名やカーネルバージョンなど、基本的なシステム情報を取得する方法を学びます。本レッスンでは、システム情報の取得 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜ重要か
サーバーにログインしたら最初に確認するのは「このマシンは何者か」です。OS のバージョン、カーネル、CPU、メモリ、ディスク、稼働時間、ネットワーク。これらは障害対応の起点であり、構成管理ツール (Ansible / Terraform) が前提とする情報でもあります。クラウド環境では似たような VM が大量に並ぶため、SSH した直後に主要情報をワンライナーで吐く癖を付けると、誤操作で別ホストを壊す事故を大きく減らせます。
このレッスンでは「サーバー入った直後に毎回打つ」確認コマンドを一通り押さえ、ヘルスチェックや構築自動化のスクリプトに組み込めるレベルにします。
主要コマンド一覧
| 観点 | コマンド | 取得情報 |
|---|---|---|
| ホスト | hostname / hostnamectl | ホスト名、起動 ID |
| カーネル | uname -a | カーネル名 / バージョン / アーキ |
| OS | cat /etc/os-release | ディストロ名 / バージョン |
| 稼働 | uptime | 起動時間、ロードアベレージ |
| CPU | lscpu / nproc | コア数、モデル名 |
| メモリ | free -h | RAM / Swap 使用量 |
| ディスク | df -h | マウントごとの使用量 |
| ユーザー | whoami / id | 自分のユーザー、グループ |
図解 情報取得の階層
下位レイヤから順に拾っていくと、トラブル時に「ハードか OS かアプリか」の切り分けがしやすくなります。
代表例 1 ホストと OS を一目で確認
ターミナル
uname -a
# 例: Linux web01 6.5.0-21-generic #21-Ubuntu SMP x86_64 GNU/Linux
cat /etc/os-release | head -3
# NAME="Ubuntu"
# VERSION="22.04.4 LTS (Jammy Jellyfish)"
# ID=ubuntuuname -a だけだとディストロ名は分からないため、/etc/os-release を併用するのがコツです。
代表例 2 リソース状況をまとめて見る
ターミナル
uptime
# 09:12:33 up 14 days, 3:47, 1 user, load average: 0.12, 0.18, 0.20
free -h
# total used free shared buff/cache available
# Mem: 7.6Gi 1.8Gi 1.2Gi 12Mi 4.6Gi 5.5Gi
# Swap: 0B 0B 0B
df -h /
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda1 50G 18G 30G 37% /ロードアベレージは「直近 1 分 / 5 分 / 15 分」の順で、コア数を超えていなければ概ね健全と判断します。free -h の available がアプリで実際に使える残量、df -h の Use% が 90% 超えになると要警戒です。
| 指標 | 健全 | 警戒 | 緊急 |
|---|---|---|---|
| Load Average (1 min) | < コア数 | コア数の 1〜2 倍 | コア数の 2 倍超 |
free -h available | 全体の 30% 以上 | 10〜30% | 10% 未満 |
df -h Use% | 80% 未満 | 80〜90% | 90% 以上 |
代表例 3 1 行ヘルスチェック
ターミナル
echo "=== $(hostname) ==="; uname -r; uptime; free -h | grep Mem; df -h / | tail -1この 1 行をスクリプト化して ssh host1 'bash -s' < check.sh のように回せば、多数のホストを横並びで点検できます。
本番運用では Prometheus や CloudWatch などのメトリクス基盤に集約するのが王道ですが、SSH してその場で確かめるシンプルなコマンドの引き出しは別途必須です。監視に出ない一過性の挙動を見逃さないために、手元の手作業も鍛えておきます。
proc ファイルシステムの活用
ターミナル
cat /proc/cpuinfo | grep 'model name' | head -1
cat /proc/meminfo | head -3
cat /proc/uptime/proc は カーネルが提供する仮想ファイルで、CPU やメモリの情報をテキストとして読めます。lscpu などのツールも内部ではここを読み出しています。スクリプトから機械的に拾うときは /proc/meminfo を直接 awk で処理する方が安定することもあります。
クラウド特有のメタデータ
AWS / GCP では HTTP 経由でインスタンスメタデータが取れます。
ターミナル
# AWS EC2 IMDSv2
TOKEN=$(curl -s -X PUT 'http://169.254.169.254/latest/api/token' -H 'X-aws-ec2-metadata-token-ttl-seconds: 60')
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-idクラウドのメタデータエンドポイントは「そのホスト自身が誰か」を確実に知る正規ルートです。手元の hostname と実体がずれていた場合 (DNS のキャッシュ、リネーム後等) の最終確認に使えます。
よくある間違い
unameだけだと OS バージョン (Ubuntu 22.04 など) は分からないdfの単位を見落として GB と MB を取り違える (常に-hを付ける)freeのusedだけ見て焦る (buff/cache を引いたavailableが実質残量)- 古い記事の
ifconfignetstatを打つ (現代はipss推奨)
やってみよう
演習では uname / uptime / df を組み合わせて、最低限のヘルスチェック出力を作ります。
ここまでの要点
ハード → OS → ランタイム → ユーザーの階層で情報を拾う。free は available、df は Use% を見る。/proc とクラウドメタデータは正規ルート。ifconfig netstat は非推奨で ip ss に置換。
まとめ
- 入った直後に hostname / uname -a / cat /etc/os-release / uptime を打つ習慣を付ける
- リソースは free -h / df -h / lscpu でざっと俯瞰する
- /proc は仮想ファイルとしてカーネル情報を提供する正規ルート
- クラウドではメタデータエンドポイントで自身の正体を取れる
- 監視基盤が整っていても、手元で確かめるコマンドの引き出しは別途必要
次のレッスン
次は パッケージ管理 で、apt / dnf などを使ったソフトウェアの導入・更新・削除を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- システム情報 の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. システム情報 とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
課題
- uname -s で OS 種別を出す
- uptime の出力行数を wc -l で確認する