top - システム情報やプロセスを対話的に表示する

スポンサーリンク

topコマンドはシステム情報やプロセスを対話的に表示できます。この記事では、対話モードでの操作について紹介します。対話モードでの操作は項目の設定、検索やフィルタ、マルチウインドウ等を行うことができます。そして、表示設定を保存することもできます。また、この記事で利用しているtopコマンドはprocps-ng v3.3.16のものとなります。

コマンドラインオプションや少し補足的な情報は、別の記事で紹介しています。

top - コマンドラインオプションとYコマンドの利用について
topコマンドはシステム情報やプロセスを対話的に表示できます。この記事は以下のtopコマンドについての補足的な記事になります。 この記事では、topコマンドのコマンドラインオプションについてと、特にその中のバッチモードについてを簡単に紹介し...

スポンサーリンク

topの画面

topの画面は以下のような画面になります。

topの画面

topの画面はおおまかに上下で2つの部分に分けることができます。上の部分はシステム情報をまとめた表示になります。下の部分はプロセスの表になります。

上の部分の表示は設定によって変わりますが、上のtopの画面では、
1行目は現在時刻、システムが起動してからの稼働時間、ログインしているユーザ数、CPUの平均負荷率(1分間、5分間、15分間)でuptimeコマンドと同様な見方ができます。

2-3行目はタスク又はスレッドについての数とCPU使用状況の割合(usはuser processの時間, syはsystem processの時間, niはナイス値が変更されたuser processの時間, idはidle時間, waはIOの待ち時間, hiはhardware interruptの時間, siのsoftware interruptの時間, stはハイパーバイザによって(別のvmとのCPUの競合を理由に)このvmから奪われた時間)になります。

4-5行目はメモリ使用量で物理メモリと仮想メモリで、freeコマンドと同様な見方をできます。
また、5行目のavail Memはスワップせずに新しいアプリケーションを開始するために使用できる物理メモリの見積もりになります。

また、単位について、1KiB=1024bytes、1MiB=1024KiB、1GiB=1024MiB、…のようになります。

表示の下にある表の行は、上キーや下キー等でスクロールができ、項目(列)が多い場合は右キーや左キーで項目のスクロールができます。
topの画面は一定時間で画面更新が行われます。デフォルトでは3秒に設定されています。

'h'でインタラクティブコマンドのヘルプを開くことができます。さらに詳細な情報はmanコマンドで確認できます。
'q'でtopの画面を終了できます(Ctrl+Cでも可)。

 

 

 

インタラクティブコマンド

インタラクティブコマンドについて、すべてではないですが、以下のようなものがあります。

項目の設定
'f', 'F': topコマンドの項目を追加・削除する画面の呼び出し
'<','>': 現在のソート項目をその項目の左または右に変更
'R': ソート順を変更
'x': 現在のソートに利用しているフィールドをハイライト表示

検索について
'L': 検索
'&': 次の検索に移動

フィルタについて
'u': 実効ユーザでフィルタ
'U': すべてのユーザでフィルタ
'o': フィルタ(大文字小文字区別しない)
'O': フィルタ(大文字小文字は区別)
'=': 現在のウインドウでのフィルタのリセット
'+': 全てのウインドウでのフィルタのリセット(マルチウインドウ)

プロセス操作について
'k': プロセスIDを入力し、指定したシグナルを送信
'r': プロセスIDを選択して、NICE値(タスクの優先度の設定)の設定

設定ファイルについて
'W': topの現在の設定を設定ファイルの書き込み
'Y': 設定ファイルを利用し、top内で別ウインドウを開き、ファイルやコマンド出力の情報の確認ができる(設定ファイルに追記する必要あり)。

マルチウインドウについて
'A': マルチウインドウ
'g': マルチウインドウの移動
'G': 現在のウインドウの名前の変更(3文字)

その他
'C': スクロールの座標位置の表示
'Z': カラーの設定
'B': 太字の切り替え
'E', 'e': サマリ/タスクのメモリのスケールを変更(KiB, MiB, GiB, ...)
'l': 負荷平均(ロードアベレージ)の表示の切り替え
't': タスクやCPUのステータスの情報や表示の切り替え
'm': メモリ情報の情報や表示の切り替え
'I': Irixモード(Onの時、cpu使用率が100%を超え、Offの時、cpu使用率は100%までになる。例えば、4コアの場合でonは400%(1CPUは100%)、offは100%(1CPUは25%)になる)
'H': タスク表示とスレッド表示の切り替え
'J': 数字の正規化(右寄せや左寄せ)
'c': コマンド名の正規化(コマンドがフルパスに変更)
'i': アイドル状態の行を表示
'S': 時間を累積モード(終了した子プロセスの時間を親プロセスに加算)に変更
'j': ユーザ名やコマンド名などの文字列を左寄せか右寄せに変更
'y': 動作しているタスクをハイライト表示
'z': カラーかモノクロかの変更
'b': ハイライトの表示を太字にするか、文字色と背景色の反転かの変更
'n','#': 表示するタスクの最大個数の設定
'Ctrl+o': 現在のフィルタ設定の表示
'V': ツリー表示(並び順がツリーになるように変更され、コマンド名の部分がツリー表示の記述になる)
'v': 一番上の行で子が存在するツリーの子の表示と非表示の切り替え
'd', 's': 更新間隔の設定

 

 

 

項目の設定

'f','F'で項目(列)の設定画面を表示できます。

項目の設定画面

'd'やSpaceキーで項目を表示するかしないかを決定できます。
また、項目の順番は一度、右キーを押します。そうするとハイライト部分が説明の部分まで大きくなり、そこから上下キーで移動させ、左キーかEnterキーで位置を決定します。

ソート項目に関しては、's'で設定します。例えば、上の設定画面の一番上の行を見ると%CPUが現在のソート項目になっています。
この画面を終了する場合は'q'またはEscキーになります。

 

 

 

コマンドのフルパス表示やツリー上の表示

'c'でコマンドの表示をフルパスに表示できます。

'c'コマンドの利用前

'c'コマンドの利用後

 

'V'でコマンドの表示(プロセス)をツリー上に表示できます。

'V'コマンドによるツリー表示

'v'を利用すると選択されている行(一番上にある行)のツリーの下にある行を折りたたんだり、展開できます。

systemdのツリー下を折りたたむ前

systemdのツリー下を折りたたみ後

 

 

 

検索とフィルタ

'L'で下の行に対して検索を行うことができ、'&'で次の検索に移動できます。
検索をリセットする場合は、'='を利用します。

検索文字の入力

検索結果

 

'o', 'O'はフィルタを利用できます。'o'は文字の大文字小文字の区別はせず、'O'は区別します。

フィルタとして文字の指定や数値の大小関係('=','<','>')などが利用できます。フィルタの条件の最初に'!'をつけると否定となり、条件に該当しないものが表示されます。
また、フィルタをつけた後に、'o'や'O'を使ってフィルタを追加できます。
現在のフィルタを確認する場合は'Ctrl+o'(manページでは^Oで表記されます)を利用します。

'o'コマンドのフィルタの入力画面としては

のように表示されます。

試しに、例として、いくつかbashを開いて、以下のように入力してみると、

そのフィルタの結果は以下のように表示されます。

フィルタ結果(^Oで現在のフィルタを表示)

また、2つ目以降のフィルタを追加したい場合、同様に'o'や'O'コマンドを実行させます。2つ目のフィルタとしてユーザがrootであるものをフィルタを利用して表示します。

そうすると以下のように表示できます。

2つ目のフィルタを追加した結果(^Oで現在のフィルタを表示)

また、数値を用いたフィルタの例は以下のようになります。条件としてプロセスIDが55000より大きいものを表示しています。

数値のフィルター例(^Oで現在のフィルタを表示)

また、'o'や'O'でもユーザのフィルタはできますが、別でユーザのフィルタとして'u','U'があります。'u'や'U'は実効ユーザか全てのユーザでのフィルタかの違いがありますが、実際に利用する場合はほとんど違いはないと思います。

フィルタをリセットする場合は、検索と同じように'='でフィルタをリセットできます。

 

 

 

プロセス操作

'k'を入力することでkillコマンドのような操作を、'r'を入力することでreniceコマンドのような操作を行うことができます。
以下は'k'コマンドを利用した例になります。

topの画面でプロセスを終了させる様子

デフォルトでは、一番上の行がデフォルトのPIDになります。デフォルトのままでよい場合は何も入力せずにEnterを押し、違う場合は数値を入力します。

次に、どのようなシグナルを送信するかになります。同様にデフォルトのままでよい場合は何も入力せずにEnterを押し、違う場合は別の数値またはシグナル名を入力します。

 

 

 

マルチウインドウ

'A'でtopの画面を分割できます。'g'でマルチウインドウの番号を選択して移動ができます。
また、'G'を入力して現在のウインドウの名前の変更(3文字まで)ができます。

マルチウインドウの画面

 

 

 

設定ファイル

フィルタ等を利用したtopの画面を、別の機会にtopコマンドを用いた時に、同じような状態で開きたい場合があります。
その場合は、'W'を使用することで、topの画面の現在の状態を設定ファイルに保存することができます。保存される場所は、例えば、"~/.config/procps/toprc"のようになります。違う場合は'W'を押したときに表示される保存場所をよく見る必要があります。

'W'でファイルを保存する様子

topの設定ファイルの名前について、実際には"~/.config/procps/<topコマンドの名前>rc"のように保存されます。これは、例えば、topコマンドのシンボリックリンク作成したときに違いが出てきます。

topコマンドのシンボリックリンクを作成して、そのシンボリックリンクのtopコマンド(ここでは、testtop)を起動して、設定ファイルを作成すると"~/.config/procps/testtoprc"のようになります。

シンボリックリンクから設定ファイルを保存する様子

別の機会に、シンボリックリンクのtopコマンドを起動させた場合、その保存した設定ファイル"~/.config/procps/testtoprc"が用いられて、topの画面が開きます。
このことを用いると様々な画面のtopコマンドを利用することができます。定型の形で使いたいtopの画面が複数ある時に利用してみても良いかもしれません。