topコマンドの確認方法

## topコマンドとは？

リソースの状況確認に使えるコマンドで、
以下のように表示されます。

```
top - 11:14:25 up 1 min,  1 user,  load average: 0.06, 0.03, 0.01
Tasks:  92 total,   1 running,  50 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1006896 total,   507080 free,    80744 used,   419072 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   785568 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                              
    1 root      20   0   43572   5248   3896 S  0.0  0.5   0:01.90 systemd                                                                                              
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                                             
    3 root      20   0       0      0      0 I  0.0  0.0   0:00.02 kworker/0:0                                                                                          
    4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/0:0H                                                                                         
```

## topコマンドの見方

```
top - 11:14:25 up 1 min,  1 user,  load average: 0.06, 0.03, 0.01
```

`11:14:25` : 時間を表示
`up 1 min` : OSが起動してからの時刻
`1 user` : コンソールへログインしているユーザ
`load average: 0.06, 0.03, 0.01` : 実行待ちとディスクI/O待ちのプロセスの数 を表示していて、左から[1分平均] [5分平均] [15分平均]になります。


```
Tasks:  92 total,   1 running,  50 sleeping,   0 stopped,   0 zombie
```

`92 total` : 存在するプロセス数
`1 running` : 実行中のプロセス数
`50 sleeping` : スリープ中のプロセス数
`0 stopped` : 停止されたプロセス数
`0 zombie` : ゾンビプロセス数

```
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
```

`0.3 us` : ユーザプロセスの使用時間の割合
`0.0 sy` : システムプロセス使用時間の割合
`0.0 ni` : 優先度を設定されたプロセス使用時間の割合
`99.7 id` : アイドル状態の時間の割合
`0.0 wa` : 読み込みや書き込みの完了待ち時間の割合
`0.0 hi` : ハードウェア割り込み時間の割合
`0.0 si` : ソフトウェア割り込み時間の割合
`0.0 st` : CPUリソースを他サーバに割かれてしまい割り当てられなかった時間の割合

```
KiB Mem :  1006896 total,   507080 free,    80744 used,   419072 buff/cache
```

`1006896 total` : 物理メモリ量
`507080 free` : 空いているメモリ量
`80744 used` : 割り当てられているメモリ量
`419072 buff/cache` : バッファやキャッシュに割り当て中のメモリ量


```
KiB Swap:        0 total,        0 free,        0 used.   785568 avail Mem 
```

`0 total` : swap量
`0 free` : 空いているswap量
`0 used` : 割り当てられているswap量
`785568 avail Mem` : 物理メモリの実質的な空き容量


```
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
    1 root      20   0   43572   5248   3896 S  0.0  0.5   0:01.90 systemd  
```

`PID` : プロセスID
`USER` : 実行しているユーザ
`PR` : Priorityの略で優先度
`NI` : nice値
`VIRT` : 割り当てられている仮想のメモリ容量
`RES` : Resident Memory Sizeの略で、実際に消費されているメモリ量
`SHR` : Shared Memory Sizeの略で、RESのうち、共有メモリとして消費されているメモリ量
`S` : プロセスの稼働状態
`%CPU` : CPU使用率
`%MEM` : メモリ使用率
`TIME+` : プロセスが稼働してからCPUが処理した時間
`COMMAND` : プロセス名。実行ファイル名やカーネルスレッド名が入る

## 便利機能

- メモリとswapの表示を変える

topコマンドのデフォルト

```
KiB Mem :  1006896 total,   504980 free,    82720 used,   419196 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   783556 avail Mem 
```

「m」を1回目押す
ゲージで見えます

```
KiB Mem : 22.2/1006896  [|||||||||||||||||                                                            ]
KiB Swap:  0.0/0        [                                                                             ]
```

「m」を2回目押す

```
KiB Mem : 22.2/1006896  [                                                                             ]
KiB Swap:  0.0/0        [                                                                             ]
※実際はゲージが出てます
```

「m」を3回目押す → 消える

- CPUごとに使用率を確認

topデフォルト

```
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
```

「1」を1回押す
CPUごとに見れます

```
%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.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
```

- プロセスIDで絞る

`top -p [プロセスID]` でそのプロセスIDだけを絞ってみることが出来ます。

```
top - 11:51:36 up 38 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1006896 total,   504048 free,    83644 used,   419204 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   782632 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                              
    1 root      20   0   43572   5252   3896 S  0.0  0.5   0:01.92 systemd  
```

- 秒数を指定して更新

`top -d[秒数]` で秒数ごとに更新することが出来ます。

- メモリの使用率ごとに並べる

topコマンドを実行してから `shift+m` でメモリごとにソートできます。

- CPUの利用率ごとに並べる

topコマンドを実行してから `shift+p` でメモリごとにソートできます。


## 勉強後イメージ

あまりちゃんと見たことなかった・・・
でもすごいいろいろ情報がのっている

## 参考

- [【図解/Linux】top コマンドの見方 ~メモリやload averageの単位,定義,目安~](https://milestone-of-se.nesuke.com/sv-basic/linux-basic/top-command/)
- [topコマンドの話](https://www.netassist.ne.jp/blog/?p=11879)