はじめに
障害対応などでメモリやCPU使用率を始めとしてサーバの状態を確認することがあると思います。
本番運用しているシステムの場合は監視ツールで、直接ホストにログインせずともサーバの状態を確認できるようにしたり、障害に迅速に対応できるようにある値が一定の閾値を超えると通知されるようにする場合がほとんどだと思います。
ただ、業務でインフラをメインで扱う場合に直接ホストにログインしてサーバの状態を確認しなければならないこともあります。
その場合に役立つコマンドを備忘録的に書いていこうと思います。
※今後も更新していくかもしれません。
メモリの使用量確認
-
free
コマンド
$ 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
コマンド
$ 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
表示される情報が多いのでヘッダー部分についてもう少し見ていきます。
- ロードアベレージなど確認
top - 11:17:51 up 15 days, 1:26, 3 users, load average: 0.00, 0.00, 0.00
# 現在時間 稼働時間 ログインユーザー数 時間あたり待機中タスク数 (1分 5分 15分)
- タスク数確認
Tasks: 95 total, 1 running, 56 sleeping, 0 stopped, 0 zombie
# 合計タスク 稼働中タスク数 待機中タスク数 停止中タスク数 ゾンビタスク数
- CPUの状態確認
%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の計算待ち
- メモリの状態確認
KiB Mem : 472572 total, 106804 free, 133212 used, 232556 buffers
# 合計容量 未使用の容量 使用中の容量 バッファとして使用されている容量
KiB Swap: 0 total, 0 free, 0 used. 310172 cached
# スワップ領域の状態
パーティーションごとのディスク使用状況
-
df
コマンド
$ 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
コマンド
$ 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
主要なシステムログ情報確認
$ more /var/log/messages
# more 最後まで表示されると終了、出力結果がターミナルに残る
$ less /var/log/messages
# less qで終了、出力結果がターミナルに残らない
$ tail -5 /var/log/messages
# 末尾5行表示
最後に
サーバーの負荷状態を調べる際によく使うコマンドの例を記載しました。
特定の情報のみ表示させたい場合は上記のコマンドに加えて更なるオプションコマンドやgrep
を活用すればより素早くスマートに必要な情報を取得できます。