Linuxシステム監視のための必須コマンド トップ10
Linuxシステムは、世界中の無数のアプリケーション、サービス、およびインフラストラクチャコンポーネントの基盤となっています。その安定性、パフォーマンス、リソースの可用性を確保することは、システム管理者にとって極めて重要な責任です。プロアクティブな監視は、ボトルネックを特定し、問題を予測し、問題がエスカレートする前に最適なシステムヘルスを維持するのに役立ちます。
この記事では、すべてのLinux管理者がリアルタイムのシステムパフォーマンス分析とリソース追跡のために習得すべき、最も重要な10のコマンドについて詳しく説明します。これらのツールは、CPUとメモリ使用率からディスクI/Oとネットワークアクティビティまで、システムのさまざまな側面に関する貴重な洞察を提供します。これらのコマンドを理解し、定期的に使用することで、パフォーマンスの問題を効率的に診断し、リソースを大量に消費しているプロセスを特定し、Linuxシステムがスムーズに動作することを保証できます。
遅いサーバーのトラブルシューティング、リソース割り当ての最適化、または単に日常的なヘルスチェックのいずれの場合でも、ここで取り上げるコマンドは、効果的なLinuxシステム監視の基盤を形成します。これらの不可欠なツールと、それらを活用してより健全でパフォーマンスの高いLinux環境を実現する方法を探ってみましょう。
1. top - リアルタイムのプロセスアクティビティ
topコマンドは、実行中のLinuxシステムの動的なリアルタイムビューを提供します。システム情報の概要と、Linuxカーネルによって現在管理されているプロセスまたはスレッドのリストを表示します。システムアクティビティの迅速な概要を得るために、管理者が最初に利用するツールの1つです。
主要な指標:
- CPU使用率:
us(ユーザー),sy(システム),ni(nice),id(アイドル),wa(I/O待機),hi(ハードウェア割り込み),si(ソフトウェア割り込み),st(スティールタイム)。 - メモリ使用率: 合計、空き、使用済み、バッファ/キャッシュ。
- スワップ使用率: 合計、空き、使用済み。
- プロセスリスト: PID, User, PR (優先度), NI (nice値), VIRT (仮想メモリ), RES (常駐メモリ), SHR (共有メモリ), S (ステータス), %CPU, %MEM, TIME+, COMMAND。
基本的な使用方法:
top
実践例:
- CPU使用率でソート:
top内でPを押します。 - メモリ使用率でソート:
top内でMを押します。 - 特定のユーザープロセスを表示:
top内でuを押し、ユーザー名を入力します。 - プロセスを強制終了:
top内でkを押し、PIDを入力します。
ヒント:
1を押すと、個々のCPUコアの表示を切り替えます。qを押すとtopを終了します。top -bn1を使用して、単一のスナップショットを取得します(スクリプトに便利です)。
2. htop - 対話型プロセスビューア
htopは、従来のtopコマンドよりも多くの利点を提供する、強化された対話型でユーザーフレンドリーなプロセスビューアです。より視覚的に魅力的でナビゲートしやすいインターフェースを提供し、プロセスの監視と管理を容易にします。
主な利点:
- 視覚的なメーター: CPU、メモリ、スワップの使用率がグラフィカルに表示されます。
- スクロール可能なリスト: 垂直方向および水平方向にスクロールして、すべてのプロセスとその完全なコマンドラインを確認できます。
- 簡単なプロセス管理: PIDを入力することなく、ファンクションキーを使用して直接、プロセスの強制終了、nice値の変更などのアクションを実行できます。
- ツリービュー: 親子関係を示すツリー形式でプロセスを表示できます。
基本的な使用方法:
# インストールが必要な場合があります:
# sudo apt install htop (Debian/Ubuntu)
# sudo yum install htop (RHEL/CentOS)
htop
実践例:
- プロセスをフィルタリング:
F4を押します。 - プロセスを強制終了: プロセスを選択し、
F9を押します。 - さまざまな列でソート:
F6を使用します。
ヒント:
htopは、優れたユーザーエクスペリエンスのため、対話型監視に一般的に推奨されます。- ワークフローに合わせて
htopの表示オプション(F2)をカスタマイズします。
3. vmstat - 仮想メモリ統計
vmstatコマンドは、プロセス、メモリ、ページング、ブロックI/O、トラップ、およびCPUアクティビティに関する情報を報告します。メモリボトルネックや高いディスクI/Oを特定するのに優れたツールです。
主要な指標:
r: 実行時間を待っているプロセスの数。b: 中断不可能なスリープ(通常はI/O)でスリープしているプロセスの数。swpd: 使用されている仮想メモリ量。free: アイドルメモリ量。si/so: ディスクからスワップインされたメモリ量 / ディスクにスワップアウトされたメモリ量。bi/bo: ブロックデバイスから受信したブロック / ブロックデバイスに送信されたブロック。wa: I/O完了を待機した時間。
基本的な使用方法:
vmstat 1 5 # 1秒ごとに5回レポート
実践例:
- すべての統計をテーブルで表示:
vmstat -a - アクティブ/非アクティブメモリを表示:
vmstat -a - slabinfoを表示:
vmstat -m - ディスク統計を表示:
vmstat -d
ヒント:
si/soの値が高い場合、メモリ負荷と過剰なスワッピングを示していることが多く、パフォーマンスを著しく低下させる可能性があります。- 一貫して高い
waパーセンテージは、I/Oボトルネックを示唆しています。
4. iostat - I/O統計
iostatはsysstatパッケージの一部であり、CPU使用率とデバイス、パーティション、およびネットワークファイルシステムのI/O統計を報告します。ディスクパフォーマンスの問題を理解するために不可欠です。
主要な指標:
%user,%system,%iowait,%idle: CPU使用率の内訳。r/s/w/s: 1秒あたりの読み取り/書き込み数。rkB/s/wkB/s: 1秒あたりの読み取り/書き込みキロバイト数。await: デバイスに発行されたI/O要求が処理されるまでの平均時間(ミリ秒)。%util: I/O要求がデバイスに発行されたCPU時間の割合。
基本的な使用方法:
# インストールが必要な場合があります:
# sudo apt install sysstat (Debian/Ubuntu)
# sudo yum install sysstat (RHEL/CentOS)
iostat -xz 1 5 # 拡張統計、1秒ごとに5回
実践例:
- 特定のデバイスの監視:
iostat -xz /dev/sda 1 - CPU使用率のみ表示:
iostat -c - デバイス使用率のみ表示:
iostat -d
ヒント:
- 高い
%util(100%に近い)と高いawait時間の組み合わせは、そのデバイスでI/Oボトルネックが発生していることを示します。 rkB/sとwkB/sをr/sとw/sと比較して、平均I/Oサイズを理解します。
5. free - メモリ使用率
freeコマンドは、システムの物理メモリとスワップスペースの合計、空き、使用済みの量、およびカーネルで使用されるバッファとキャッシュを表示します。
主要な指標:
total: インストールされている合計メモリ。used: 使用済みメモリ(バッファ/キャッシュを含む)。free: 未使用メモリ。shared: tmpfs(共有メモリセグメント)で使用されるメモリ。buff/cache: カーネルバッファとページキャッシュで使用されるメモリ。available: スワッピングなしで、新しいアプリケーションを開始するために利用できるメモリの推定値。
基本的な使用方法:
free -h # 人間が読みやすい形式で出力
実践例:
- メモリをメガバイトで表示:
free -m - 5秒ごとに継続的に更新:
watch -n 5 free -h
ヒント:
available列は、新しいプロセスに対して実際にどれくらいのメモリが空いているかを理解するための最も重要な指標です。- Linuxはディスクキャッシュのために利用可能なメモリを積極的に使用するため、
freeの値が低いのは正常であり、多くの場合望ましいことです。
6. df - ディスクスペース使用率
dfコマンドは、ファイルシステムで使用され、利用可能なディスクスペースの量を報告します。ストレージ容量を監視し、ディスク満杯のシナリオを防ぐために不可欠です。
主要な指標:
Filesystem: ファイルシステムの名前。Size: ファイルシステムの合計サイズ。Used: 使用されているディスクスペース量。Avail: 利用可能なディスクスペース量。Use%: 使用されているディスクスペースの割合。Mounted on: ファイルシステムのマウントポイント。
基本的な使用方法:
df -h # 人間が読みやすい形式で出力
実践例:
- inode使用率を表示:
df -i(inodeはメタデータ構造です。これが不足すると、空き容量があってもファイルの作成ができなくなります)。 - 特定のファイルシステムタイプを表示:
df -hT -t ext4
ヒント:
- ファイルシステムが満杯になるのを防ぐため、定期的に
Use%を確認してください。これはアプリケーションの障害やシステムの不安定性を引き起こす可能性があります。 - 高いinode使用率は、多数の小さなファイルがある場合に問題となることがあります。
7. du - ファイルとディレクトリのディスク使用量
duコマンドは、ファイルスペースの使用量を推定します。dfがファイルシステム全体の使用量をチェックするのに対し、duは特定のファイルやディレクトリのサイズを調べるために使用され、ディスクスペースを消費しているものを特定するために重要です。
主要な指標:
- 指定されたファイルまたはディレクトリの合計サイズ。
基本的な使用方法:
du -sh /var/log # /var/logディレクトリの要約を人間が読みやすい形式で表示
実践例:
- すべてのサブディレクトリのサイズを表示(1階層下まで):
du -h --max-depth=1 /home/user - 最大のファイル/ディレクトリを検索:
du -ah /path/to/check | sort -rh | head -n 10
ヒント:
duをsortやheadと組み合わせて使用すると、ディスクスペースを大量に消費しているものを迅速に特定できます。- 大きなディレクトリで
duを実行する際は、リソースを大量に消費する可能性があることに注意してください。
8. sar - システムアクティビティレポーター
sarはsysstatパッケージの強力なツールで、システムアクティビティ情報を収集、報告、または保存します。リアルタイムのスナップショットを表示するtopやvmstatとは異なり、sarは履歴データを提供することに優れており、長期的なパフォーマンス分析やキャパシティプランニングにとって非常に貴重です。
主な機能:
- CPU統計:
%user,%nice,%system,%iowait,%steal,%idle。 - メモリ統計:
kbmemfree,kbmemused,kbbuffers,kbcached。 - ディスクI/O:
tps,rd_sec/s,wr_sec/s。 - ネットワーク統計:
rxpck/s,txpck/s,rxbyt/s,txbyt/s。 - ロードアベレージ、スワップアクティビティ、カーネルアクティビティなど。
基本的な使用方法:
# 1秒ごとに5回CPU使用率をレポート:
sar -u 1 5
# ディスクアクティビティをレポート:
sar -d
# メモリ使用率をレポート:
sar -r
# ネットワーク統計をレポート:
sar -n DEV
実践例:
- 昨日のCPUアクティビティを表示:
sar -u -f /var/log/sysstat/saDD(DDを日付に置き換えてください) - 今日の収集されたすべてのデータを表示:
sar -A
ヒント:
- 履歴分析のために、
sysstatパッケージがインストールされ、定期的にデータを収集するように設定されていることを確認してください。 sarは圧倒されるほど多くの情報を提供することがあります。調査に関連する特定のフラグ(-u,-r,-d,-n)に焦点を当ててください。
9. ss (Socket Statistics) - ネットワーク接続
ssはソケットを調査するためのユーティリティです。これは、古いnetstatコマンドよりも高速で効率的な代替品であり、TCP、UDP、およびその他のソケットタイプに関するより詳細な情報(状態、ローカル/リモートアドレス、プロセスIDなど)を提供します。
主要な指標:
- 状態:
ESTAB,LISTEN,TIME-WAIT,CLOSE-WAITなど。 - Recv-Q / Send-Q: 受信および送信キューのサイズ。
- Local Address:Port / Peer Address:Port: ローカルおよびリモートのエンドポイント。
- Process Name: ソケットに関連付けられたプロセス。
基本的な使用方法:
ss -tuln # TCP、UDP、リスニング中、数値ポート
実践例:
- すべてのTCP接続をリスト:
ss -t - すべてのUDP接続をリスト:
ss -u - 特定のポートでリスニングしているプロセスを表示:
ss -tulnp | grep 80 - ソケット統計を要約:
ss -s
ヒント:
- 異常に高い
TIME-WAIT接続数を探してください。これはクライアント側の問題やWebサーバーの設定ミスを示している可能性があります。 Recv-QとSend-Qを監視して、ネットワークバッファリングの問題やアプリケーション処理の遅延の兆候を検出します。
10. uptime - システムの稼働時間とロードアベレージ
uptimeコマンドは、システムの稼働時間、現在の時刻、ログインしているユーザー数、および過去1分、5分、15分のシステムロードアベレージを表示します。
主要な指標:
- 現在の時刻: そのままの意味です。
- 稼働時間: システムが稼働している時間。
- ユーザー: 現在ログインしているユーザー数。
- ロードアベレージ: 実行可能状態または中断不可能な状態にあるプロセスの平均数。これには、CPU上で実行中、CPU待ち、またはディスクI/O待ちのプロセスが含まれます。
- 1分間のロードアベレージ
- 5分間のロードアベレージ
- 15分間のロードアベレージ
基本的な使用方法:
uptime
実践例:
- サーバーの一般的なビジー状態をすばやく確認するためによく使用されます。
ヒント:
- ロードアベレージをシステムのCPUコア数と比較してください。ロードアベレージがCPUコア数よりも一貫して高い場合、CPUまたはI/Oのボトルネックを示していることがよくあります。
- 時間の経過とともにロードアベレージが増加している場合(例:1分 > 5分 > 15分)、システムがよりビジーになっていることを示唆しています。
まとめ
これらの10の必須Linuxコマンドを習得することは、健全で高性能なシステムを監視および維持することに焦点を当てたシステム管理者にとって不可欠です。topとhtopによるCPUスパイクの迅速な特定から、iostatによるディスクI/Oボトルネックの診断、vmstatによるメモリ負荷の確認まで、これらのツールはプロアクティブなシステム管理のための包括的なツールキットを提供します。
これらのコマンドを監視ルーチンに定期的に組み込み、その出力を理解し、いつどのコマンドを使用するかを知ることで、問題を効率的にトラブルシューティングし、リソース使用率を最適化し、Linuxインフラストラクチャの信頼性を確保できるようになります。これらのオプションをさらに探求し、自動レポートのためにスクリプトに統合して、システム管理能力を向上させましょう。ハッピーモニタリング!