概要
- htop の各項目の意味を詳細に解説
- uptime や load average の正しい読み方を説明
- /proc ファイルシステムから情報を取得する仕組みを紹介
- プロセス や タスク の違い、IDやユーザー情報の取得方法を説明
- プロセスツリー やユーザー管理まで幅広くカバー
htopの見方とシステム情報の取得方法
- htop はLinuxシステムのリソース状況やプロセス情報をリアルタイムで表示するツール
- Uptime はシステムの稼働時間を示し、
/proc/uptimeファイルから取得- 1つ目の値:システム起動からの総稼働秒数
- 2つ目の値:全CPUコアのアイドル時間の合計(マルチコアの場合、合計が稼働時間を超える場合あり)
- strace コマンドで、uptimeなどのプログラムがどのファイルを参照しているか確認可能
- 例:
strace -e open uptimeで/proc/uptimeファイルを参照していることを確認
- 例:
- uptimeコマンド は人間が読みやすい形式で出力、スクリプト用途には生データの方が便利
Load Averageの正しい理解
- Load average は
/proc/loadavgから取得し、1分、5分、15分の平均負荷を示す /proc/loadavgの内容例:0.00 0.01 0.03 1/120 1500- 最初の3つ:直近1分、5分、15分の平均システム負荷
- 4つ目:現在実行中または実行待ちプロセス数/総プロセス数
- 5つ目:最後に割り当てられたプロセスID
- Load average=1.0 は、1つのCPUコアが常に1つのプロセスを処理している状態
- 2コアの場合、 2.0 が100%利用率の目安
- Load average にはCPU以外のリソース待ち(I/Oウェイトなど)も含まれるため、CPU使用率と必ずしも一致しない
- 過去の負荷は 指数移動平均 で計算されており、直近の値ほど重視されるが、過去分も一部反映
プロセスとタスクの違い・表示
- htop では「Tasks」と表示されるが、これは「プロセス」と同義
- Linuxカーネル内部では「タスク」と呼ばれる
- スレッド表示 :Shift+Hでスレッドの可視化切替
- カーネルスレッド表示 :Shift+Kでカーネルスレッドの可視化切替
- Tasks: 23, 10 thr はスレッドも表示中であることを意味
プロセスIDと/procの利用
- 新しいプロセスには PID(プロセスID) が割り当てられる
- バックグラウンド実行 (&)時は、ジョブ番号とPIDが表示
- /proc/<pid>/ 配下にプロセスごとの詳細情報が格納
- 例:
/proc/12503/cmdlineで実行コマンドを取得 - コマンドは
\0区切りで格納、trやstringsコマンドで整形可能 cwdはカレントディレクトリ、exeは実行バイナリへのシンボリックリンク
- 例:
プロセスツリーと親子関係
- プロセスは 親子関係 を持ち、ツリー構造を形成
- htopでF5キー押下でツリー表示
ps fやpstreeコマンドでもツリー表示可能
- 例:init→sshd→bash→実行コマンドの流れ
- プロセス生成時は fork でコピー、 exec で実行ファイルに置き換え
プロセスのユーザー管理
- 各プロセスには 所有ユーザー があり、数値ID(Uid)で管理
/proc/<pid>/statusでUid確認可能idコマンドで名前に変換
- /etc/passwd や /etc/group ファイルからユーザー名を取得
- NSS(Name Service Switch)の設定
/etc/nsswitch.confで参照先を指定
- NSS(Name Service Switch)の設定
まとめ
- htopや/proc を活用することで、Linuxシステムの詳細な状態把握が可能
- Load average や プロセス情報 は正しく理解して使い分けることが重要
- strace や ps、 pstree などのコマンドで内部動作を深掘りできる
- システム管理やトラブルシューティングの基礎知識として必須