TOP 概要

top コマンド(top command)は Unix/Linux を使ううえで最も基本的なツールの 1 つです。Windows のタスクマネージャのように、現在動作しているプログラムの実行状況を監視できます。top はプログラムの監視としても最も手軽な方法の 1 つで、メモリ使用量や CPU 使用量、その他さまざまな情報を観察できます。類似ツールも多く、htopgtop のような派生版もあります。興味があれば調べてみてください。ただし基本用途であれば top で十分です。

使い方は簡単です:

$ top

top snapshot

デフォルトで表示される項目は次のとおりです:

  • PID: タスクの Process ID
  • USER: 実行ユーザー
  • PR: 優先度(Priority)
  • NI: Nice 値。負の値は優先度が高く、正の値は優先度が低いことを意味します
  • VIRT: 使用した仮想メモリ(Virtual Memory)の総量(kB)
  • RES: 常駐メモリ(Resident Size)(kB)
  • SHR: 使用した共有メモリ(Shared Memory)の総量(kB)
  • S: 状態(Status)
    • R: 実行中
    • D: 割り込み不可のスリープ(通常 I/O 待ち。signal で中断できない)
    • S: スリープ(起床可能)
    • T: 中断中または停止。SIGSTOP / SIGTSTP による停止、または ptrace によるトレース(デバッガ等)で発生することがあります
    • Z: ゾンビ。通常は Child が終了し、Parent による wait()/回収待ちの状態です
  • %CPU: CPU 使用率(%)。1 コアが 100% なので、マルチコアでは 100% を超える場合があります
  • %MEM: 全メモリに対する使用率(%)
  • TIME+: 実行時間
  • COMMAND: コマンド名

TOP のインタラクティブ操作

top に入ったあと、インタラクティブに操作する使い方があります。以下ではよく使うキーをいくつか紹介します。その他は 參考資料 のリンクを参照してください。おすすめの学習方法は、記事を読みながら実際に操作してみることです。

タスクの並び替え

タスクの並び替えは最重要の操作だと思います。top で一番見たいのは「どのプロセスが CPU やメモリをどれだけ使っているか」だからです。

  • M: メモリ使用率で並び替え
  • N: PID で並び替え
  • P: CPU 使用率で並び替え
  • T: 実行時間で並び替え
  • >/<: 並び替え列を左右に切り替え
  • R: 逆順

一般操作

ここで一番大事なのは q で終了できることです 😂

  • h/?: ヘルプ
  • Enter/Space: 画面更新(デフォルト 3 秒)
  • =: フィルタ解除(検索後)
  • B: 太字表示
  • d/s: 更新間隔の変更
  • I: CPU 使用率表示 / CPU コア数表示の切り替え
  • k: 特定 PID の終了
  • L: 文字列検索(& と併用)
  • q: 終了
  • r: nice 値の変更(正の値は優先度を下げ、負の値は優先度を上げる。sudo が必要)
  • u/U: ユーザーで絞り込み
  • W: 現在の設定を書き込み、次回起動時も反映
  • Z: 色の変更

上部パネル設定

  • l: 稼働時間の表示/非表示
  • m: メモリの表示/非表示
  • t: タスク(CPU サマリ)の表示/非表示
  • 1: 各コアの表示/非表示

タスクパネル設定

f を押すとより多くのシステム情報を表示できます。bxy と組み合わせると、何が動いているかがより分かりやすくなります。

  • b: タスクパネルのハイライト
  • x: 列のハイライト(b が必要)
  • y: 行のハイライト(実行中のプロセスが光る。b が必要)
  • c: コマンドのフルパス表示
  • f: 表示フィールドの設定(非常に多くの情報がある)
    • d: 表示の切り替え
    • 右矢印: 並び替え設定(上下キーで順序変更)
    • 左矢印: 並び替え解除
    • esc/q: 設定終了
  • i: アイドルタスクの非表示
  • n/#: 表示タスク数の設定と表示
  • j: 右寄せ

以下は CPU 順(P)で並び替えてから bxy でハイライトした状態です:

demo

h を押したときのヘルプ:

demo help

TOP のコマンドライン操作

top はコマンドライン引数も持っています:

$ top -h
top -hv | -bcHisS -d delay -n limit -u|U user | -p pid -w [cols]

ここでは重要なものだけを取り上げます。詳細なパラメータ説明は 參考資料 を参照してください。

例えば、次は acliu ユーザーの上位 10 タスクを表示します:

$ top -n 10 -u acliu

また、バッチモード(batch mode、オプション -b)を使うと、Shell の他ツールと組み合わせやすくなります。例えば:

$ top -b -n 3 | grep "python"

これにより top の出力から “python” を含む行を抽出します。また -n(バッチ回数)を設定しているので、3 回分のバッチ状態(更新ごとの状態)が出力されます。

參考資料

  1. top manual
  2. Linux top command