本文へLinuxのhtop/topで見ることができるすべての説明
概要
- 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つのプロセスを処理している状態
- Load average にはCPU以外のリソース待ち(I/Oウェイトなど)も含まれるため、CPU使用率と必ずしも一致しない
- 過去の負荷は 指数移動平均 で計算されており、直近の値ほど重視されるが、過去分も一部反映
プロセスとタスクの違い・表示
- htop では「Tasks」と表示されるが、これは「プロセス」と同義
- スレッド表示 :Shift+Hでスレッドの可視化切替
- カーネルスレッド表示 :Shift+Kでカーネルスレッドの可視化切替
- Tasks: 23, 10 thr はスレッドも表示中であることを意味
プロセスIDと/procの利用
- 新しいプロセスには PID(プロセスID) が割り当てられる
- バックグラウンド実行 (&)時は、ジョブ番号とPIDが表示
- /proc// 配下にプロセスごとの詳細情報が格納
- 例:
/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で参照先を指定
まとめ
- htopや/proc を活用することで、Linuxシステムの詳細な状態把握が可能
- Load average や プロセス情報 は正しく理解して使い分けることが重要
- strace や ps、 pstree などのコマンドで内部動作を深掘りできる
- システム管理やトラブルシューティングの基礎知識として必須
提供: ハクソク · 要約更新:
AIによる日本語要約です。内容は原文とあわせてご確認ください。
Hacker Newsの議論を読む
これめっちゃいいね!htopはよく使うけど、主にpidやCPUの問題を探すためだけで、他の機能はあんまり理解してなかったんだよね。