■ はじめに
top コマンドと言えば、リソースの状況確認に使えるコマンドですが、実は結構多機能です。今回は、個人的によく使う機能や便利そうだと思う機能を調べたので、まとめました。
対象バージョンは次のとおりです。
$ top -v
procps-ng version 3.3.10
■ ヘルプ ( h or ? )
top コマンド実行中に h or ? で、ヘルプを表示できます。top コマンドを終了させずに対話型のコマンドを確認できるので、非常に便利です。
■ 文字列検索 ( L )
top コマンド実行中に「L -> 文字列入力 -> Enter」で、ヒットした文字列を含むプロセスを上部に表示できます。ヒット部分はハイライトされます。
実行例1 (入力キー: L,"cpu",Enter, L,"bash",Enter, L,"20",Enter)
実行例1 (入力キー: L,"cpu",Enter,L,"bash",Enter,L,"20",Enter)
■ ユーザ毎に監視 ( u )
top コマンド実行中に「u -> ユーザ名を入力 -> Enter」でユーザ毎のリソース使用状況を監視できます。
■ プロセスを終了させる ( k )
top コマンド実行中に「k -> 終了させたい PID 入力 -> Enter」で、入力した PID の プロセスを終了 (SIGTERM シグナルを発行)できます (送信シグナルは変更可)。
実行例3 (入力キー: L,"top",k,"16973",Enter,Enter)
■ コマンドを詳細に表示 ( c )
top コマンド実行中に c で、実行コマンド (COMMAND) をフルパスか、[]付きで表示できます。[]付きは、カーネルモードで動作していることを意味します。
実行例4
top - 22:08:04 up 4 days, 6:11, 1 user, load average: 0.61, 0.72, 0.45
... (略) ...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1516 root 20 0 4367388 654408 107028 S 3.3 8.1 22:27.82 /usr/bin/gnome-shell
19753 root 20 0 790540 39864 29668 S 0.7 0.5 0:02.43 /usr/libexec/gnome-terminal+
1154 gdm 20 0 845936 25776 18680 S 0.3 0.3 3:09.20 /usr/libexec/gsd-color
20036 root 20 0 162460 4580 3868 R 0.3 0.1 0:00.08 top
2 root 20 0 0 0 0 S 0.0 0.0 0:00.17 [kthreadd]
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H]
6 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [mm_percpu_wq]
■ ソート関連 ( <, >, P, M, R )
top コマンド実行中に
<, > で、ソート対象のカラムを選択できます。
P で、CPU の使用量順にソートできます。
M で、メモリの使用量順にソートできます。
R で、ソートの昇順/降順を切り替えられます。
さらに...
z...カラー/モノクロ切り替え
x...選択カラムをハイライト
b...選択カラムのハイライトをより分かり易くする
を使うことで、どのカラムを選択しているのか分かりやすくできます。
実行例5 (入力キー: z,x,b,>,<,<,<,<,<,<,<,<)
ちなみに Z で、詳細なカラーリングの設定ができます。
■ CPU、メモリ、スワップの使用率を視覚的に表示 ( t, m )
,
top コマンド実行中に「t -> t」で、CPUの使用率を視覚的(横棒グラフ)に表示できます。同様に「m -> m」で、メモリ、スワップの使用率も視覚的に表示できます。
さらに z で、横棒グラフの内訳を分かりやすく表示できます。
■ CPU コア毎の情報を表示 ( 1 )
top コマンド実行中に 1 で、CPU コア毎の情報を表示できます。デフォルトでは、複数の CPU コア情報が1つに纏められており %Cpu(s) と表示されています。
実行例7
top - 22:06:48 up 4 days, 6:10, 1 user, load average: 0.56, 0.74, 0.43
Tasks: 270 total, 1 running, 269 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st ★
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st ★
%Cpu2 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st ★
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st ★
... (略) ...
■ プロセス毎の CPU 使用率を CPU コア数の総使用率で表示 ( I )
top コマンド実行中に I で、プロセス毎の CPU 使用率を CPU コア数の総使用率で表示できます。デフォルトでは、プロセス毎に使用している CPU コアの使用率が表示されています。
実行例8 では、CPU コア数が4つのシステムで、CPU に負荷を掛けています($ stress --cpu 1)。%Cpu3、%CPU がそれぞれ 100 になります。%Cpu3 が3番目の CPU コア情報で、%CPU が stress コマンドの CPU 使用率です。
実行例8
# 1つの CPU コアに負荷を掛ける
$ stress --cpu 1 &
$ top (1 キー 押下の状態)
top - 22:02:01 up 4 days, 6:05, 1 user, load average: 0.96, 0.44, 0.22
Tasks: 272 total, 2 running, 270 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.7 us, 0.0 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.7 hi, 0.0 si, 0.0 st
%Cpu2 : 0.7 us, 0.0 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
^^^^^^^^
KiB Mem : 8093920 total, 690324 free, 2598136 used, 4805460 buff/cache
KiB Swap: 8225788 total, 8043004 free, 182784 used. 4710784 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19817 root 20 0 7904 96 0 R 100.0 0.0 0:39.91 stress
^^^^^^
この状態で I を押下すると、%CPU が 24.9(約25) と表示されます。これは、stress コマンドの CPU 使用率(100)が4つある CPU コア数の総使用量で表示されている(100/4 = 25)ためです。
実行例9
top - 22:05:08 up 4 days, 6:08, 1 user, load average: 1.06, 0.77, 0.40
Tasks: 272 total, 2 running, 270 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8093920 total, 687224 free, 2600356 used, 4806340 buff/cache
KiB Swap: 8225788 total, 8043004 free, 182784 used. 4708324 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19817 root 20 0 7904 96 0 R 24.9 0.0 3:46.19 stress
^^^^
なお、システムの CPU コア数は、
$ nproc
、
$ grep -c processor /proc/cpuinfo
、
$ getconf _NPROCESSORS_ONLN
、
などからも確認できます。
■ 設定を保存 ( W )
top コマンド実行中に W で、前述の設定などを保存(~/.toprcに保存)できます。例えば「z -> W」とすると、top コマンド実行時は常に z を押下した(カラーリングされた)状態になります。
設定をリセットする場合は、設定ファイルを削除 ($ rm ~/.toprc) すれば、OK です。