topコマンドの使い方・見方

topコマンドとは?

topコマンドはサーバの稼働状況を確認するためのコマンドです。
topコマンドではCPUやメモリの利用率やプロセスの稼働状況などを一定時間間隔でリアルタイムに確認することができます。

topコマンドの見方

百聞は一見にしかず。まずはtopコマンドを実行してみましょう。

# top
top – 20:00:27 up 2 days, 2:19, 6 users, load average: 0.58, 0.56, 0.54
Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.9%us, 0.9%sy, 0.0%ni, 95.3%id, 1.9%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3145728k total, 557468k used, 2588260k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1663 apache 15 0 315m 15m 9040 S 2.0 0.5 0:23.69 httpd
5172 apache 15 0 313m 14m 8584 S 2.0 0.5 0:21.50 httpd
21589 apache 15 0 315m 15m 9324 S 2.0 0.5 0:36.89 httpd
22049 apache 15 0 315m 15m 9324 S 2.0 0.5 1:03.66 httpd
25624 apache 16 0 315m 15m 9316 S 2.0 0.5 0:32.87 httpd
28576 apache 15 0 313m 14m 8308 S 2.0 0.5 0:02.95 httpd
15665 apache 15 0 313m 14m 8592 S 1.7 0.5 0:42.57 httpd
17659 apache 15 0 313m 14m 8592 S 1.7 0.5 0:41.13 httpd
24487 apache 15 0 313m 14m 8592 S 1.7 0.5 0:33.58 httpd
2019 apache 15 0 315m 15m 9336 S 1.3 0.5 0:22.88 httpd
23954 apache 15 0 313m 14m 8592 S 1.3 0.5 0:34.34 httpd
30337 apache 15 0 313m 14m 8592 S 1.3 0.5 0:01.87 httpd
1808 mysql 18 0 624m 185m 7208 S 1.0 6.0 11:04.96 mysqld
1 root 15 0 10364 728 612 S 0.0 0.0 0:00.04 init
1173 root 22 0 28620 592 472 S 0.0 0.0 0:00.00 brcm_iscsiuio
1453 root 15 0 5924 664 536 S 0.0 0.0 0:00.03 syslogd
1456 root 25 0 3820 424 340 S 0.0 0.0 0:00.00 klogd
1487 rpc 18 0 8068 608 484 S 0.0 0.0 0:00.00 portmap
1510 rpcuser 15 0 11068 788 656 S 0.0 0.0 0:00.00 rpc.statd
1543 dbus 22 0 21272 692 488 S 0.0 0.0 0:00.00 dbus-daemon
1561 root 15 0 62644 1216 652 S 0.0 0.0 0:00.10 sshd
1573 root 18 0 21660 932 712 S 0.0 0.0 0:00.00 xinetd
1584 root 18 0 44284 648 260 S 0.0 0.0 0:00.00 vsftpd
1596 root 18 0 10780 1320 1056 S 0.0 0.0 0:00.00 mysqld_safe
1837 root 15 0 6068 616 472 S 0.0 0.0 0:00.11 dovecot
1838 root 15 0 61612 2428 1800 S 0.0 0.1 0:00.08 dovecot-auth
1890 root 15 0 54252 2276 1752 S 0.0 0.1 0:00.02 master
1895 postfix 18 0 54376 2356 1824 S 0.0 0.1 0:00.00 qmgr
1915 root 18 0 19724 1152 584 S 0.0 0.0 0:00.00 crond
1939 root 21 0 46752 804 416 S 0.0 0.0 0:00.00 saslauthd
1940 root 18 0 46752 544 156 S 0.0 0.0 0:00.00 saslauthd

topコマンドを実行すると、このようにかなりの情報が出力されます。

情報量が多すぎて何がなんだかわかりませので、それぞれの項目の意味をひとつずつ確認していきましょう。

1行目 top 〜

top – 20:00:27 up 2 days, 2:19, 6 users, load average: 0.58, 0.56, 0.54

topコマンドの1行目は稼働時間やロードアベレージなどの情報を表示する部分です。

それぞれの項目とその意味は下表のようになっています。

項目 意味
20:00:27 現在時刻(20時00分27秒)
up 2 days, 2:19 稼働時間(2日と2時間19分稼働中)
6users ログインユーザ数(6ユーザがログイン中)
ロードアベレージ 左から「過去1分」「過去5分」「過去15分」

つまり、この1行目はuptimeコマンドの実行結果と同じです。

2行目 Tasks:〜

Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie

2行目は現存するタスクの状態を表示する部分です。

項目 意味
total タスクの合計数
running 稼働中のタスク数
sleeping 待機中のタスク数(6ユーザがログイン中)
stopped 停止タスク数
zombi ゾンビタスク数

ゾンビは、処理は完了したがメモリから消去されていないタスクを意味します。

3行目 Cpu(s):〜

Cpu(s): 1.9%us, 0.9%sy, 0.0%ni, 95.3%id, 1.9%wa, 0.0%hi, 0.0%si, 0.0%st

3行目はCPUの使用率についての情報になります。CPUの利用についての情報を占有時間の割合で表示しています。

項目 意味
us ユーザプロセスの使用時間
sy システムプロセスの使用時間
ni 実行優先度を変更したユーザプロセスの使用時間
id アイドル状態の時間
wa I/Oの終了待ちをしている時間
hi ハードウェア割込み要求での使用時間
si ソフトウェア割込み要求での使用時間

4行目 Mem:〜

4行目は物理メモリの使用状況についての情報です。

項目 意味
total メモリの合計容量
used 使用中のメモリ容量
free 未使用のメモリ容量
buffers バッファに使用されているメモリの容量
freeコマンドを実行したときのような感じとなります。

5行目 Swap:〜
5行目はスワップ領域の使用状況についてです。

項目 意味
total スワップ領域の合計量
used 使用中のスワップ領域
free 未使用のスワップ領域
cached キャッシュされているスワップ領域
6行目以下
6行目からは実行中のプロセス(タスク)の詳細表示になります。

項目 意味
PID プロセスID
USER プロセスを実行しているユーザ
PR プロセスの優先度
NI ナイス値(相対的優先度)-20(最高)~19(最低)
VIRT プロセスの仮想メモリサイズ(スワップアウトしたメモリ使用量を加えたメモリ量)
RES プロセスが使用している物理(スワップされていない)メモリサイズ
SHR プロセスが使用している共有メモリ
S プロセスの状態
%CPU CPU使用率
%MEM 実メモリ使用率
TIME+ プロセスの実行時間(秒)
COMMAND 現在実行中のコマンド名
psコマンドを実行したときのような感じとなります。

“プロセスの状態”は大文字のアルファベット一文字で表されますが、その意味は以下のとおりです。

S スリープ状態
T 停止中
D 割り込み不可(sleep)
N ナイス値がプラスの状態
< ナイス値がマイナスの状態 R 実行中 Z ゾンビ状態 W スワップアウト状態