#はじめに
会社の研修中にtopコマンドで実行中のプロセス一覧が見れることを教わりました。教わったことと調べたことを整理しつつ、topコマンドで表示される情報を理解するのが本記事の目的です。
こちらの記事を参考にしました
#topコマンドとは
topコマンドは、そのシステムで実行されているプロセスの一覧を表示するlinuxコマンドです。システム全体の負荷や、プロセスごとのメモリ使用量などを見ることができます。
#topコマンドを実行してみる
topコマンドを実行するとシステムのプロセス情報が一度に表示されます。
初心者目には情報が多いですが、少しづつ見ていきます。
##ヘッダー部分
画像での空行を区切りとして、そこから上部の部分をヘッダー部分として見ていきます。
###時間とユーザー数
top - 19:41:02 up 3:35, 1 user,
一行目「top」と書かれている箇所の情報です。
左から
- 現在時間
- サーバーの稼働時間(「up 3:35」の部分。「時:分」表記)
- ログインユーザー数
となります。
###load average
load average: 0.52, 0.44, 0.53
一行目残りの部分の情報です。
この欄には、単位時間あたりの平均待ちタスク(プロセス)数が表示されています。小数が3つ並んでいますが、左から直近で「1分, 5分, 15分」間の単位時間あたり待ちタスク数となっています。
上の画像だと例えば、直近1分間の平均待ちタスク数は0.52タスク、ということになります。
###Tasks
Tasks: 387 total, 1 running, 315 sleeping, 0 stopped, 0 zombie
現在のタスクを状態ごとに見ることができます。
- total : 全タスク数
- running : 稼働中タスク数
- sleeping : 待機中タスク数
- stopped : 停止したタスク数
- zombie : ゾンビタスク数
#CPU
%Cpu(s): 2.9 us, 0.3 sy, 0.0 ni, 96.6 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
CPUの利用時間の割合をプロセスの種類ごとに見ることができます。上の画像では単位がありませんが、単位は「%」です。
- us : userプロセス
- sy : systemプロセス
- ni : niceプロセス
- id : idleプロセス
- wa : I/O waitプロセス
- hi : hardware interruptプロセス(interruptは「割り込み」という意味です)
- si : software interruptプロセス
(個々のプロセスがどういうプロセスなのかは他の機会に調べようと思います。)
画面で「1」を押すと、個々のCPUごとの情報に切り替えることができます。
%Cpu0 : 1.0 us, 0.0 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.7 si, 0.0 st
%Cpu1 : 0.7 us, 0.0 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 1.4 us, 0.3 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.4 us, 0.7 sy, 0.0 ni, 98.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.7 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 1.0 us, 0.7 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
###Memory/Swap
KiB Mem : 7965864 total, 336044 free, 5603244 used, 2026576 buff/cache
KiB Swap: 2097148 total, 1692156 free, 404992 used. 800580 avail Mem
物理メモリとスワップ領域の使用メモリ量が表示されています。「Mem」が物理領域、「Swap」がスワップ領域です。
スワップ領域についてはこちらのサイトがわかりやすかったです。
- total : 全メモリ量
- free : 使用していないメモリ量
- used : 使用中のメモリ量
- buff/cache : バッファ/キャッシュで使用されているメモリ量
最後の「avail Mem」は「新しいアプリがスワップせずに使えるメモリ量」です。
##プロセス一覧部分
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1407 sada 20 0 604828 92172 63112 S 2.0 1.2 6:17.70 Xorg
2196 sada 20 0 7374224 476924 53408 S 1.7 6.0 8:05.10 java
1537 sada 20 0 4039788 274080 115156 S 1.3 3.4 8:13.99 gnome-shell
2768 sada 20 0 2008760 555128 310552 S 1.0 7.0 7:52.98 chrome
12359 sada 20 0 849556 48752 34872 S 1.0 0.6 0:07.22 gnome-terminal-
空行より下の部分には実行中のプロセス一覧が表示されます。
- PID : プロセスID
- USER : そのプロセスを実行しているユーザー
- PR : 優先度 0を基準とした、相対的な優先度です。負の値もあります。
- VIRT : 確保されている仮想メモリ量
- RES : 使用している物理メモリ量
- SHR : 他のプロセスと共有される可能性のあるメモリ量
- S : プロセスのステータス アルファベットによって分類されています
- D: 割り込み不能押すと
- R: 実行中
- S: スリープ状態
- T: 停止中
- Z: ゾンビプロセス
- %CPU : CPUの使用率
- %MEM : メモリの使用率
- TIME+ : プロセスの実行時間
- COMMAND : プロセスの実行コマンド名
このプロセス一覧では、「Shift + p」でCPU使用率順(%CPU)、「Shift + m」でメモリ使用率順(%MEM)に並べ替えることができます。
また画面上で「c」を押すと「COMMAND」の部分が絶対パスで表示されます。
メモリ使用率順で並び替えて、絶対パスを表示した画像がこちらです。
#さいごに
topコマンドで表示されるプロセス一覧画面の見方をまとめました。
topコマンドには他にも便利な機能がたくさんあるようです。使いこなして、プロセス管理をスムーズに行っていきたいです。