2
7

More than 5 years have passed since last update.

topコマンド

Posted at

自分用のリマインダなので注意

top コマンド

概要

システム全体の負荷情報やプロセス、CPU、メモリ、スワップなどの統計情報を取得する。

主に監視の際に使用する。

各項目については以下に記載。


ヘッダー

Load Average

top - 08:42:47 up 2min,  2 users,  load average: 2.76, 0.76, 0.27
項目 概要
08:42:47 現在時間
up 2min サーバーの稼働時間
2 users ログインユーザー数
load average: 2.76, 0.76, 0.27 左から、"1分"、"5分"、"15分"あたりの待機タスク数

Task

Tasks: 110 total,   7 running, 103 sleeping,   0 stopped,   0 zombie
項目 概要
110 total 合計タスク数
7 running 稼働中タスク
103 sleeping 待機中タスク
0 stopped 停止タスク
0 zombie ゾンビタスク

ゾンビタスク
既に処理が終了したにも関わらず残存し続ける(メモリを食い続ける)タスクのこと。

親プロセスがfork()で子プロセスを作成し、子プロセスの処理が終了した際にwait()で子プロセスの内容を消去するが、ここで子プロセスに対してwait()が実行されない場合にその子プロセスがゾンビタスクとして残存し続けることになる。


CPU

CPUの使用時間割合を示す

Cpu(s): 77.1%us,  8.4%sy,  0.0%ni,  0.1%id, 14.3%wa,  0.0%hi,  0.2%si,  0.0%st
項目 概要
xx.x%us ユーザプロセスの使用時間
xx.x%sy システムプロセスの使用時間
xx.x%ni 実行優先度を変更したユーザプロセスの使用時間
xx.x%id アイドル状態の時間
xx.x%wa I/Oの終了待をしている時間
xx.x%hi ハードウェア割込み要求での使用時間
xx.x%si ソフトウェア割込み要求での使用時間
xx.x%st OS仮想化利用時に、ほかの仮想CPUの計算で待たされた時間

ヘッダ行のCPU使用率はOSを起動してからの平均値なので、何事も無ければ無い程(急激にメモリを食うような処理をしないほど)数値が低く出る。

そのため、パフォーマンスの調査なのではヘッダのCPU使用率は見ないほうがいい。


Memory/Swap

Mem:  15144564k total,  1178112k used, 13966452k free,    28300k buffers
Swap:        0k total,        0k used,        0k free,   289928k cached
項目 概要
Memory
total メモリーの合計容量
used 使用中のメモリー容量
free 未使用のメモリー容量
buffers バッファとして使用されているメモリー容量
Swap
total スワップ領域の合計容量
used 使用中のスワップ領域の容量
free 未使用のスワップ領域の容量
cached キャッシュされているスワップ領域の容量

プロセス一覧

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0 19348 1528 1220 S  0.0  0.0   0:01.41 init
項目 概要
PID Proccess ID
プロセスID
USER プロセスの実行ユーザー
PR priority
プロセスの静的優先度(降順)
NI プロセスの相対優先度
0を基準とし、-20 ~ 19で表示(昇順)
VIRT virtual
プロセスの仮想メモリサイズ
メモリ使用量 + スワップ使用量
RES resistory
プロセスの使用している物理メモリ容量
SHR share
プロセスの使用している共有メモリ容量
S status
プロセスの状態
%CPU CPU使用量
%MEM 物理メモリ使用量
TIME+ プロセスの実行時間
COMMAND プロセスで実行されているコマンド

%CPUは前回スクリーン更新からのタスクのCPU時間占有率を表すため、現在のCPU使用率を全体の容量との割合で算出している訳ではないため注意が必要。

基本的に2回目以降の出力を見るようにする。


プロセスのステータス

プロセス一覧Sについて、ステータスの種類は以下

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

オプション

欄についてはオプションに対して値を指定する必要があるもののみ記載する。

無いものについては-とする。

以下にすべてを書ききっているわけではないことと、バージョンによって使用できるコマンド/オプションも異なるため、参考程度に見ること。

現在操作している端末で使用可能なオプションはman [コマンド名]で調べることが出来る。

オプション 概要
-a メモリ使用順にソート -
-p [PID] 特定のプロセス監視 プロセスID
-d [秒.ミリ秒] 監視の更新タイミング 更新間隔
-n [整数] 更新回数 繰り返し監視する回数指定
-b バッチモード
-nによる回数指定が終了するもしくはCtrl + Cでキルされるまで実行し続ける
-
-s セキュアモードで実行 -
-u [USER] 監視するユーザを名前もしくはIDで指定 ユーザー名もしくはUSERの値
-c COMMAND欄をプログラム名の表示かコマンドラインの表示かを切り替える
起動中はcで切り替え
-
-i 何も実行していないアイドル状態のプロセスを表示するか切り替える
起動中はiで切り替え
-S 累計時間モード
起動中はSで切り替え
-
-w [桁数] 出力の幅 [整数]

Sample Code

  • とりあえず見たいとき
$ top
  • 5秒ごとに監視の更新をしたいとき
$ top -d 5
2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7