Linuxサーバの状態確認でよく使うコマンド

# はじめに

障害対応などでメモリやCPU使用率を始めとしてサーバの状態を確認することがあると思います。
本番運用しているシステムの場合は監視ツールで、直接ホストにログインせずともサーバの状態を確認できるようにしたり、障害に迅速に対応できるようにある値が一定の閾値を超えると通知されるようにする場合がほとんどだと思います。
ただ、業務でインフラをメインで扱う場合に直接ホストにログインしてサーバの状態を確認しなければならないこともあります。
その場合に役立つコマンドを備忘録的に書いていこうと思います。
※今後も更新していくかもしれません。


# メモリの使用量確認

- `free`コマンド

```bash
$ free -h
# -h:読みやすい単位で表示
              total        used        free      shared  buff/cache   available
Mem:           461M        125M        110M        416K        226M        308M
Swap:            0B          0B          0B


$ free -t 
# -t:物理メモリとスワップメモリの合計も表示
              total        used        free      shared  buff/cache   available
Mem:         472572      127924      113016         416      231632      315784
Swap:             0           0           0
Total:       472572      127924      113016
```

# プロセスごとのCPU、メモリ使用率などをリアルタイム監視

- `top`コマンド

```bash
$ top

top - 11:17:51 up 15 days,  1:26,  3 users,  load average: 0.00, 0.00, 0.00
Tasks:  95 total,   1 running,  56 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 :   472572 total,   106804 free,   133212 used,   232556 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   310172 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                           
 7851 test_+    20   0  171108   4488   3800 R   1.0  0.9   0:00.01 top                                                                                                                                                                               
    1 root      20   0  117524   3696   2116 S   0.0  0.8  75:50.65 systemd                                                                                                                                                                           
    2 root      20   0       0      0      0 S   0.0  0.0   0:05.72 kthreadd                                                                                                                                                                          
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                                      
    6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq                                                                                                                                                                      
    7 root      20   0       0      0      0 S   0.0  0.0   0:53.71 ksoftirqd/0  
```

表示される情報が多いのでヘッダー部分についてもう少し見ていきます。

* ロードアベレージなど確認

```bash
top - 11:17:51 up 15 days,  1:26,  3 users,  load average: 0.00, 0.00, 0.00
#　　　現在時間　　　稼働時間　　　　　　ログインユーザー数  時間あたり待機中タスク数 (1分 5分 15分)
```

* タスク数確認

```bash
Tasks:  95 total,   1 running,  56 sleeping,   0 stopped,   0 zombie
#       合計タスク    稼働中タスク数  待機中タスク数　　停止中タスク数　ゾンビタスク数
```
* CPUの状態確認

```bash
%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
#       ユーザー　システム　 nice   アイドル状態  I/Oの終了待ち ハードウェア割込み ソフトウェア割込み OS仮想化利用時他の仮想CPUの計算待ち 
```

* メモリの状態確認

```bash
KiB Mem :   472572 total,   106804 free,   133212 used,   232556 buffers
#           合計容量　　　　　　未使用の容量    使用中の容量      バッファとして使用されている容量

KiB Swap:        0 total,        0 free,        0 used.   310172 cached
# スワップ領域の状態
```


# パーティーションごとのディスク使用状況

- `df`コマンド

```bash

$ df -h
# -h 読みやすい単位で表示

Filesystem                                                 Size   Used  Avail Capacity iused      ifree %iused  Mounted on
/dev/disk1s1                                              466Gi   10Gi  379Gi     3%  488471 4881964409    0%   /
devfs                                                     188Ki  188Ki    0Bi   100%     651          0  100%   /dev
/dev/disk1s2                                              466Gi   67Gi  379Gi    16% 1066029 4881386851    0%   /System/Volumes/Data
/dev/disk1s5                                              466Gi  8.0Gi  379Gi     3%       8 4882452872    0%   /private/var/vm
map auto_home                                               0Bi    0Bi    0Bi   100%       0          0  100%   /System/Volumes/Data/home
map -fstab                                                  0Bi    0Bi    0Bi   100%       0          0  100%   /System/Volumes/Data/Network/Servers
```
# ネットワークのステータス確認

- `netstat`コマンド

```bash

$ netstat -ant
# -a 接続と待ち受けをしているすべてのポートの状況を表示
# -n IPアドレスとポート番号で情報を表示
# -t tcpプロトコルのみ表示

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:6062          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN         
tcp        0      0 192.168.100.1:22        ***.**.**.*:****      ESTABLISHED


$ netstat -lnt
# -l 接続待ち状態(LISTEN)のみ表示

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:6062          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN 
```

# 主要なシステムログ情報確認

```bash
$ more /var/log/messages
# more 最後まで表示されると終了、出力結果がターミナルに残る

$ less /var/log/messages
# less qで終了、出力結果がターミナルに残らない

$ tail -5 /var/log/messages
# 末尾5行表示
```

# 最後に

サーバーの負荷状態を調べる際によく使うコマンドの例を記載しました。
特定の情報のみ表示させたい場合は上記のコマンドに加えて更なるオプションコマンドや`grep`を活用すればより素早くスマートに必要な情報を取得できます。