はじめに
こんにちは!今回はtopコマンドについて解説します。
topはシステムのプロセスをリアルタイムで監視するコマンドです。CPU使用率やメモリ使用量、プロセスの状態などが一画面で見られます。
「このサーバー、何で遅いんだろう?」「どのプログラムがメモリを食ってる?」って時に超便利ですよ。サーバー運用では必須ツールです。
topコマンドとは
topは、システム全体の状態とプロセスの使用状況をリアルタイムで表示する監視ツールです。“table of processes"の略ですね。
CPU使用率、メモリ使用量、ロードアベレージ、実行中のプロセスなど、システムのすべての重要情報を一画面で確認できます。サーバーの負荷分析やトラブルシューティング、パフォーマンス監視に欠かせないコマンドです。
基本構文
|
|
オプション付きで起動できます。何もオプションなしで実行することがほとんどです。
|
|
特定のプロセスIDのみを監視することもできます。
主なオプション
| オプション | 説明 |
|---|---|
-b |
バッチモード(非対話的)。ログに保存する時に使う |
-n NUM |
バッチモードで出力する回数を指定 |
-p PID |
指定したPIDのプロセスのみを表示 |
-u USER |
指定したユーザーのプロセスのみを表示 |
-H |
スレッド表示(各スレッドを個別に表示) |
-d DELAY |
更新間隔を秒単位で指定(デフォルト3秒) |
-i |
アイドルプロセスを非表示にする |
-c |
コマンドラインの完全パスを表示 |
使用例
例1: 基本的な実行
|
|
実行結果:
|
|
topを実行するとインタラクティブ画面が開きます。システム情報とプロセス一覧が表示されます。
例2: 特定ユーザーのプロセスのみを表示
|
|
実行結果:
|
|
指定したユーザーのプロセスだけを監視できます。マルチユーザーシステムで便利です。
例3: バッチモードで1回のみ出力
|
|
実行結果:
|
|
バッチモード(非対話的)で1回だけ出力します。スクリプトで使ったりログに保存する時に便利です。
例4: バッチモードで3回出力(2秒間隔)
|
|
実行結果:
|
|
定期的にシステム状態をキャプチャしたい時に使います。
例5: 特定のプロセスのみ監視
|
|
実行結果:
|
|
特定のプロセスIDのみを監視します。複数PIDを監視する場合は-p PID1,PID2,PID3と指定できます。
例6: インタラクティブモードでメモリ使用量でソート
|
|
実行後、キー入力で操作します:
|
|
インタラクティブモードでは、キーボード操作でいろいろな表示切り替えができます。
例7: 更新間隔を1秒に設定
|
|
実行結果:
|
|
デフォルトは3秒ですが、1秒単位で監視したい時に使います。ただし負荷が高くなります。
例8: スレッドも表示
|
|
実行結果:
|
|
マルチスレッドプロセスを詳細に監視する時に使います。
例9: バッチモードでファイルに保存
|
|
実行結果:
|
|
ログとして記録する時に便利です。定期実行スクリプトで使えます。
例10: 複数プロセスを監視
|
|
実行結果:
|
|
複数のプロセスを同時監視したい時に使います。
例11: アイドルプロセスを非表示
|
|
実行結果:
|
|
アクティブなプロセスだけに絞って監視できます。
例12: コマンドラインを完全表示
|
|
実行結果:
|
|
プロセスの実行パスと引数がすべて見えます。
Tips・注意点
ロードアベレージの見方
|
|
3つの数字は直近1分、5分、15分の平均負荷です。CPU個数以上だと負荷が高いです。
メモリ情報の理解
|
|
実質的な空きメモリは「free + buff/cache」です。usedが大きく見えても、buff/cacheはすぐに開放されるので問題ありません。
プロセス終了方法
topを実行中にkキーを押すと、プロセスを終了(kill)できます。
|
|
と聞かれるので、PIDを入力します。
CPU使用率が合わない理由
複数CPU/コアがあると、各コアの負荷が表示されます。Cpu(s):の合計がコア数によって変わるのは正常です。
メモリ監視に特化した表示
|
|
メモリ使用量でソートして表示します。-oでソート列を指定できます。
実践的な使い方
サーバーの負荷確認
|
|
サーバーが重くなった時に、まずこれを実行してCPU/メモリ状況を確認します。
メモリリーク検出
|
|
特定プロセスのメモリ使用量を10回監視(5秒間隔)。メモリが増え続けていたらリーク疑い。
定期監視ログの取得
|
|
cronで定期実行して、システムの履歴を記録します。
CPU使用率の高いプロセス特定
|
|
CPU使用率が高いトップ5プロセスを表示します。
まとめ
topコマンドのポイント:
- システムのプロセスをリアルタイムで監視する必須ツール
- -b: バッチモード(スクリプトやログ保存に便利)
- -n NUM: 出力回数を指定
- -p PID: 特定プロセスのみ監視
- -u USER: 特定ユーザーのプロセスのみ表示
- -d DELAY: 更新間隔を調整
- インタラクティブモードでP/M/Tキーでソート切り替え可能
- よく使う組み合わせ:
top -b -n 1 | head -20、top -u user
サーバー管理者のマストツール。CPU/メモリの問題はまずtopを見て判断しましょう!