my_knowledge.ko

Linux | Debug, Analyze, Trace | Tech | etc...

top コマンドでよく使う or 便利そうな機能

はじめに

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) f:id:Kernel_OGSun:20200329193158g:plain

ユーザ毎に監視 ( u )

top コマンド実行中に「u -> ユーザ名を入力 -> Enter」でユーザ毎のリソース使用状況を監視できます。

実行例2 (入力キー: u,"guest",Enter) f:id:Kernel_OGSun:20200329193352g:plain

プロセスを終了させる ( k )

top コマンド実行中に「k -> 終了させたい PID 入力 -> Enter」で、入力した PID の プロセスを終了 (SIGTERM シグナルを発行)できます (送信シグナルは変更可)。

実行例3 (入力キー: L,"top",k,"16973",Enter,Enter) f:id:Kernel_OGSun:20200329193356g:plain

コマンドを詳細に表示 ( 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,>,<,<,<,<,<,<,<,<) f:id:Kernel_OGSun:20200329193359g:plain

ちなみに Z で、詳細なカラーリングの設定ができます。

CPU、メモリ、スワップの使用率を視覚的に表示 ( t, m )

, top コマンド実行中に「t -> t」で、CPUの使用率を視覚的(横棒グラフ)に表示できます。同様に「m -> m」で、メモリ、スワップの使用率も視覚的に表示できます。

さらに z で、横棒グラフの内訳を分かりやすく表示できます。

実行例6 (入力キー: t,t,m,m,z) f:id:Kernel_OGSun:20200329193405g:plain

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 です。