最新版は、以下に記載しました。
https://hana-shin.hatenablog.com/entry/2022/03/28/215636
#1 topコマンドとは?
実行中のプロセスの状態をリアルタイムで表示するコマンドです。
#2 環境
VMware Workstation 15 Player上の仮想マシンを使いました。
仮想マシンのOS版数は以下のとりです。
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@server ~]# uname -r
3.10.0-957.el7.x86_64
[root@server ~]# top -v
procps-ng version 3.3.10
-snip-
#3 実行方法
[root@server ~]# top
topコマンドを実行すると、下記のような画面が表示されます。
#4 ヘルプの表示、終了方法
h
を押下すると、下記ヘルプ画面が表示されます。
ESC
またはq
を押下すると、ヘルプ画面が終了して、元の画面に戻ります。
#5 フィルタリングの使い方(u
) その1
実行ユーザ名で、表示するプロセスを絞り込むことができます。
u
を押下して、絞り込みをしたい実効ユーザ名を入力します。
ここでは、実行ユーザ名にapache
を入力しました。
apache
を入力して、Enter
を入力すると、
実効ユーザ名がapache
のプロセスだけが表示されていることがわかります。
元の状態に戻すには、Shift
を押下したまま、=
を押下します。
#6 フィルタリングの使い方(o
) その2
##6.1 CPU使用率で絞り込む方法
事前準備として、CPU使用率が30%
,60%
のプロセスを起動します。
stress-ngコマンドの使い方は、stress-ngコマンドの使い方を参照してください。
[root@server ~]# stress-ng -c 1 -k -l 30 -q &
[root@server ~]# stress-ng -c 1 -k -l 60 -q &
起動したプロセスのCPU使用率を確認します。
psコマンドの使い方は、psコマンドの使い方を参照してください。
[root@server ~]# ps -C stress-ng -o comm,pid,ppid,%cpu
COMMAND PID PPID %CPU
stress-ng 9794 9708 0.0
stress-ng 9795 9794 30.7
stress-ng 9796 9708 0.0
stress-ng 9797 9796 60.2
次に、topコマンドでプロセスのCPU使用率を確認します。
CPU使用率が20%より大きなプロセスだけを表示してみます。
o
を押下したあと、%CPU>20.0
と入力します。
タイプミスした場合、DEL
でタイプミスした文字を削除することができます。
次にEnter
を押します。
事前準備で起動した2つのプロセスが表示されていることがわかります。
元の状態に戻すには、Shift
を押下したまま、=
を押下します。
##6.2 PIDで絞り込む方法
PIDが10未満のプロセスだけを表示してみます。
o
を押下したあと、PID<10
と入力します。
次にEnter
を押します。
PIDが10未満のプロセスだけが表示されていることがわかります。
元の状態に戻すには、Shift
を押下したまま、=
を押下します。
##6.3 COMMAND名で絞り込む方法
COMMAND名にsystemdを含むプロセスを表示してみます。
o
を押下したあと、COMMAND=systemd
と入力します。
次にEnter
を押します。
COMMAND名にsystemdを含むプロセスだけが表示されていることがわかります。
元の状態に戻すには、Shift
を押下したまま、=
を押下します。
#7 フィールドのカスタマイズ方法(Fields Management
)
##7.1 項目を追加する方法
topコマンドを実行すると、下記赤枠で囲まれた項目が、デフォルトで表示されます。
ここでは、デフォルトで表示される項目の変更方法を説明します。
f
を押下すると、下記画面が表示されます。
・黄色の項目:現在(7.1の赤枠内)表示されている項目
・白色の項目:追加で表示できる項目
ここでは、CPUの使用時間(TIME
)を表示してみます。
矢印キーを使って、TIME
のところまで、カーソルを移動します。
TIME
のところで、SPACE
を押下します。
次にESC
を押下すると、下記画面に戻ります。
右端に、TIME
項目が表示されるようになったことがわかります。
stress-ngプロセスは、各々下記時間だけCPUを使用したことがわかります。
・CPU使用率を60%に設定したプロセス:4分16秒
・CPU使用率を30%に設定したプロセス:2分10秒
##7.2 項目を削除する方法
7.1で追加した、TIME
の項目を削除してみます。
f
を押下して、下記画面を表示します。
そして、矢印キーを使って、TIME
項目にカーソルを移動します。
SPACE
を押下します。
選択した項目が黄色から白色にかわったことを確認します。
ESC
を押下すると、下記画面に戻ります。
TIME
項目が削除されたことがわかります。
#8 設定を保存する方法(W
)
Shift
を押下したまま、w
を押下すると、設定を保存することができます。
次回、topコマンド実行時、保存した設定で実行することができます。
ここでは、下記4項目もデフォルトで表示されるようにしてみます。
TIME
,SWAP
,CODE
,DATA
なお、保存した設定は、ログインディレクトリ配下の.toprcファイルに保存されます。
f
を押下したあと、カーソルをTIME
,SWAP
,CODE
,DATA
にあわせ、
SPACE
を押下して選択します。
ESC
を押下すると、下記画面に戻ります。
ここで、Shift
を押下したまま、w
を押下して、設定を保存します。
このとき、Write configuration to /root/.toprc
といったメッセージが表示されます。
Ctrl
を押下したまま、c
を押下して、topコマンドを終了します。
そして、再度、topコマンドを実行します。
以下のように、TIME
,SWAP
,CODE
,DATA
が表示されていることがわかります。
(つまり、保存した設定でtopコマンドが実行されていることがわかります)
#8 プロセス終了や優先度を変更する方法
##9.1 プロセスを終了する方法(k
)
k
を押下して、終了するプロセスを選択します。
ここでは、stress-ngプロセス(PID=9976)を終了するため、PIDとして9976を入力します。
そして、Enter
を押下します。
次に、プロセスに送信するシグナルを選択します。
ここでは、デフォルトの15(SIGTERM)を選択します。
そのあと、Enter
を押下すると、stress-ngプロセスが終了します。
##9.2 プロセスの優先度(NICE値)を変更する方法(r
)
r
を押下して、優先度を変更するプロセスを選択します。
ここでは、stress-ngプロセス(PID=9984)の優先度を変更するため、PIDとして9984を入力します。
そして、Enter
を押下します。
優先度を19に変更するため、19
と入力したあと、Enter
を押下します。
なお、優先度については、ここ(プロセス優先度(NICE値)を変更する方法)を参照してください。
stress-ngプロセスの優先度を確認します。
優先度が0から19に変更されたことがわかります。
#10 表示するプロセス数を制限する方法
表示するプロセス数を指定することができます。
ここでは、表示するプロセス数を5にしてみます。
n
を押下して、下記画面を表示します。そして、表示するプロセス数を入力します。
プロセスが5つだけ表示されていることがわかります。
元の状態に戻すには、Shift
を押下したまま、=
を押下します。
#11 ソートする方法
デフォルトでは、プロセスはCPU使用率の順(降順)でソートされています。
ここでは、プロセスをメモリ使用量の順(降順)にソートしてみます。
f
を押下したあと、矢印キーを使ってカーソルを%MEM
に移動します。
次に、s
を押下します。
s
を押下すると%CPU
が%MEM
に変更されます(赤い枠の中)。
f
を押下して元の画面に戻ります。
プロセスがメモリ使用量の順でソートされていることがわかります。
#12 文字列を検索する方法
表示されているプロセス情報から文字列を検索することができます。
Shift
を押下したまま、L
を押下して、検索する文字列を入力します。
ここでは、apache
と入力してみました。
Enter
を入力すると、検索した文字列がハイライトされます。
元の状態に戻すには、Shift
を押下したまま、=
を押下します。
#Z 参考情報
A Guide to the Linux “Top” Command
How to reduce and/or add more columns or fields to top command in Linux (swap, memory, etc)