>開発>Linux>[Linux]リソース確認コマンド集

Linuxサーバーにおけるキャパシティプランニングについて勉強したので、リソースを確認するためのコマンドをまとめてみた。

目次

キャパシティプランニングとは

キャパシティプランニングとは、コンピュータのCPU、メモリ、ディスク、ネットワーク帯域などのシステムリソースが将来的にパフォーマンスが維持できるよう、最低限のコストで設計する技法のこと。そのシステムがどれだけのリソースを必要とするのかを明確にし、それに対し、過度な性能を持つことなく、限られたコストの中で最適なリソースを、適切に見積もることが大切。また、平常時だけでなく、ピーク時でも目的のプログラムが動作できるだけのリソースを確保できるよう、将来予測することも重要。それには個々のプログラムがCPUやメモリ、I/O消費をどれだけ消費しているのかを把握することが必要。システムリソースでは、特にCPUの利用率、メモリの利用率、スワップの利用率やネットワークI/Oが重要。また、効率よくシステム上のリソースを使えるよう、設定等を調整することで性能の最適化を行うなど、パフォーマンスチューニングすることも大切。特にオンプレミスの場合は、一度構築してしまうとリソースの追加の費用と作業が大変なので、キャパシティプランニングは重要。クラウドも従量課金制なので、リソースを最適化することは不必要な課金を防ぐことができる。

リソースの使用率を確認できるtopコマンド

topコマンドでは、CPUやメモリなどのリソースの状態や平均負荷、ゾンビ状態などを確認できる。

コマンドオプション

オプション内容
-b対話モードでなくバッチモードで実行
-d sec表示を更新する間
-n times更新する回数
-u user指定したUIDまたはユーザー名のプロセスのみ表示
-p PID指定したPIDのプロセスのみ表示
topコマンドのオプション

(例)rootのプロセスを1秒間隔で5回更新する場合

top -u root -d 1 -n 5

topコマンドの操作

オプション内容
[Space], [Enter]更新
f表示項目の変更
o表示項目の順番の変更
l平均負荷の表示・非表示
mメモリ及びスワップ状態の表示の変更
u指定したユーザーのプロセスのみを表示
tプロセスとCPU状態の表示・非表示
PCPU使用率順でソート
Mメモリ使用率順でソート
NPID順でソート
T起動時間順にソート
W現在の設定を保持
kプロセスへシグナルを送信
h, ?ヘルプを表示
q終了
A表示モードの切り替え
d, s更新間隔を変更
<, >ソートする項目を変更
topコマンドの操作

表示項目

top - 09:50:25 up 3 min,  1 user,  load average: 2.49, 1.28, 0.51
Tasks: 262 total,   2 running, 260 sleeping,   0 stopped,   0 zombie
%Cpu(s):  9.5 us, 22.7 sy,  0.0 ni, 42.9 id,  6.7 wa,  0.0 hi, 18.1 si,  0.0 st
MiB Mem :   1962.3 total,    181.1 free,   1104.9 used,    676.4 buff/cache
MiB Swap:   1162.4 total,   1052.9 free,    109.5 used.    671.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                     
    729 root      20   0 1392776  33424   7964 S  78.3   1.7   0:38.02 snapd                                                                                                                                       
   1826 vboxuser  20   0 5330796 336540  96172 S  75.7  16.7   0:53.85 gnome-shell                                                                                                                                 
     47 root      20   0       0      0      0 S  42.7   0.0   0:14.56 ksoftirqd/5                                                                                                                                 
     72 root      20   0       0      0      0 S  16.8   0.0   0:05.70 kswapd0                                                                                                                                     
    483 root      20   0       0      0      0 I  11.0   0.0   0:01.93 kworker/u12:9-events_unbound                                                                                                                
     71 root       0 -20       0      0      0 I   7.4   0.0   0:01.58 kworker/0:1H-kblockd                                                                                                                        
   2194 vboxuser  20   0  985620 207296  39344 S   6.1  10.3   0:17.98 snap-store                                                                                                                                  
    234 root      20   0       0      0      0 D   4.5   0.0   0:01.38 jbd2/sda3-8                                                                                                                                 
     54 root      20   0       0      0      0 I   3.9   0.0   0:02.06 kworker/u12:1-events_unbound                                                                                                                
   2992 vboxuser  20   0  560488  47464  35232 S   3.2   2.4   0:03.31 gnome-terminal-                                                                                                                             
    205 root       0 -20       0      0      0 I   2.3   0.0   0:00.80 kworker/4:1H-kblockd                                                                                                                        
    226 root       0 -20       0      0      0 I   2.3   0.0   0:01.32 kworker/1:1H-kblockd                                                                                                                        
    476 root      20   0       0      0      0 I   2.3   0.0   0:01.49 kworker/u12:8-loop18                                                                                                                        
   4095 vboxuser  20   0   14580   4536   3672 R   2.3   0.2   0:00.11 top                                                                                                                                         
    247 root      20   0       0      0      0 I   1.9   0.0   0:01.19 kworker/4:2-events                                                                                                                          
    181 root       0 -20       0      0      0 I   1.6   0.0   0:01.51 kworker/2:1H-kblockd                                                                                                                        
     35 root      20   0       0      0      0 R   1.0   0.0   0:00.87 ksoftirqd/3                                                                                                                                 
     14 root      20   0       0      0      0 S   0.6   0.0   0:00.15 ksoftirqd/0                                                                                                                                 
     15 root      20   0       0      0      0 I   0.6   0.0   0:00.79 rcu_preempt                                                                                                                                 
     41 root      20   0       0      0      0 S   0.6   0.0   0:00.30 ksoftirqd/4                                                                                                                                 
     58 root      20   0       0      0      0 S   0.6   0.0   0:03.42 kcompactd0                                                                                                                                  
     86 root      20   0       0      0      0 I   0.6   0.0   0:00.90 kworker/0:2-ata_sff                                                                                                                         
    279 root      19  -1   40156  14020  12416 S   0.6   0.7   0:01.55 systemd-journal                                                                                                                             
    328 root      20   0       0      0      0 I   0.6   0.0   0:01.74 kworker/u12:4-ext4-rsv-conversion                                                                                                           
   2491 vboxuser  20   0  220228   1668   1424 S   0.6   0.1   0:00.97 VBoxClient 

1行目 : top

1行目は、平均負荷などの情報を表示する。平均負荷は、CPUが他のプロセスを処理している最中で、実行待ちになっているプロセスの平均。平均負荷が搭載しているCPUの数またはコア数を超えている場合は、処理待ちが発生している可能性がある。例えば、オクタコア(8コア)のCPUが2つ搭載されている場合は、16が基準となる。従って、平均負荷の値が16を超えた値になっていれば、処理待ちが発生している可能性がある。

項目内容
up現在時刻とシステム起動してからの経過時間
user現在のログインユーザー数
load average平均負荷(1分間、5分間、15分間)
topコマンドの1行目の表示項目
top - 09:50:25 up 3 min,  1 user,  load average: 2.49, 1.28, 0.51

2行目 : Tasks

ゾンビ状態とは、処理が終了したもののプロセステーブルから情報が削除されていないプロセスのこと。

項目内容
totalプロセスの総数
running実行状態
sleepingスリープ状態
stopped停止状態
zombieゾンビ状態
topコマンドの2行目の表示項目
Tasks: 262 total,   2 running, 260 sleeping,   0 stopped,   0 zombie

3行目 : %Cpu(s)

stは、仮想環境でゲストOSががホストOSに対して要求を行ったがCPUリソースを割り当てられず、待機している時間の割合であり、0%であれば要求通りCPUが割り当てられているが、そうでない場合は、ホストOSや他のゲストOS間でCPUのリソースを奪いあっていることになる。

項目内容
us(user)ユーザープロセスのCPU使用時間の割合
sy(system)カーネルのCPU使用時間の割合
ni(nice)優先度が変更されたプロセスの使用時間の割合
id(idle)CPUがアイドル状態である時間の割合
wa(io wait)ディスクI/O待ちの時間の割合
hi(hardware interupt request)ハードウェア割り込み要求時間の割合
si(software interupt request)ソフトウェア割り込み要求時価の割合
st(steal)ゲストOSがCPUを割り当てられなかった時間の割合
topコマンドの3行目の表示項目
%Cpu(s):  9.5 us, 22.7 sy,  0.0 ni, 42.9 id,  6.7 wa,  0.0 hi, 18.1 si,  0.0 st

4行目 : MiB Mem

メモリの状況を表示。

項目内容
total物理メモリの総量
free空きメモリ量
used使用中のメモリ量
buff/cacheバッファ又はキャッシュサイズ
topコマンドの4行目の表示項目
MiB Mem :   1962.3 total,    181.1 free,   1104.9 used,    676.4 buff/cache

5行目 : MiB Swap

スワップの状況を表示。

項目内容
totalスワップ領域のサイズ
free空きスワップ領域
used使用中のスワップ領域
avail Memメモリ不足の場合に利用できる物理メモリ量
topコマンドの5行目の表示項目
MiB Swap:   1162.4 total,   1052.9 free,    109.5 used.    671.7 avail Mem 

6行目以降

6行目以降は、CPU時間の消費量でソートされた状態で各プロセスの情報を表示。

項目内容
PIDプロセスID
PPID親プロセスID
USERユーザー名
RUSER実ユーザー名
UIDUID
GROUPグループ名
PR実行優先度
NInice値
VIRT使用中の仮想メモリ[KB]
RES使用中の実メモリ[KB]
SHR共有メモリサイズ[KB}
Sプロセス状態
TTY制御端末名
%CPUCPU使用率[%]
%MEM物理メモリ使用率[%]
TIME+プロセスが開始してCPUを使用し始めてからの経過時間
COMMANS実行コマンド
topコマンドの6行目以降の表示項目
 PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                     
    729 root      20   0 1392776  33424   7964 S  78.3   1.7   0:38.02 snapd                                                                                                                                       
   1826 vboxuser  20   0 5330796 336540  96172 S  75.7  16.7   0:53.85 gnome-shell                                                                                                                                 
     47 root      20   0       0      0      0 S  42.7   0.0   0:14.56 ksoftirqd/5
.
.
. 

メモリの状態を監視できるvmstatコマンド

vmstatコマンドでは、メモリ及び仮想メモリの詳細な状態を監視できる。

コマンドオプション

オプションはないが、更新間隔と更新回数を指定できる。

vmstat [更新間隔:sec] [更新回数]

(例)vmstatを1秒間隔で5回更新する場合

vmstat 1 5

表示項目

項目内容
procs : r実行待ちのプロセス数
procs : b 割り込みが不可能なスリープ状態にあるプロセス数
memory : swpdスワップサイズ[KB]
memory : free空きメモリサイズ[KB]
memory : buffバッファに割り当てられているメモリサイズ[KB]
memory : cacheキャッシュに割り当てられているメモリサイズ[KB]
swap : siディスクからスワップインされているメモリサイズ[KB/sec]
swap : soディスクからスワップアウトされているメモリサイズ[KB/sec]
io : biブロックデバイスから受け取ったブロック数[ブロック/sec]
io : boブロックデバイスから送られたブロック数[ブロック/sec]
system : in1秒あたりの割り込み回数
system : cs1秒あたりのコンテキストスイッチの回数
cpu : usユーザープロセスがCPU使用時間の割合
cpu : sy カーネルのCPU使用時間の割合
cpu : idCPUがアイドル状態の時間の割合
cpu : waディスクI/O待ち時間の割合
cpu : stゲストOSがCPUに割り当てられなかった時間の割合
vmstatコマンドの表示項目
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 452216  82668  23592 1044700    3    7    77   141   66   75  1  1 97  1  0
 1  0 452216  82668  23592 1044700    0    0     0     0  537  693  2  3 95  0  0
 0  0 452216  82668  23592 1044700    0    0     0     0  557  792  1  1 98  0  0
 2  0 452216  82668  23592 1044700    0    0     0     0  452  670  0  1 98  0  0
 0  0 452216  82668  23592 1044700    0    0     0     0  613  793  2  3 96  0  0

上記では、空き容量は、71360[KB]で、バッファやキャッシュはそこそこ使われている。スワップ領域は452216[KB]あるが、スワップイン、スワップアウトはあまりない。

procsの”b”は、I/O待ちなどで割り込みができないプロセスの数なので、0であることが望ましい。0以外の値となっている場合は、対処が必要である。

ブロックデバイスは、主にLinuxなどのUNIX系OSで周辺機器などにファイル入出力と同じ仕組みでアクセスできるようにするデバイスファイルの種類の一つ。ブロックと呼ばれる決まったデータ量を単位に送受信を行うもので、装置内の任意の位置を指定して読み書きを行うランダムアクセスに対応している。ざっくりまとめるとブロック単位でデータを転送するもの。

ディスクI/Oの状態を監視できるiostatコマンド

CPU使用状況及びディスクの入出力の情報を監視。ディスクI/Oを調査する場合に使用する。

コマンドオプション

オプション内容
-cCPU使用率のみ表示
-dディスクI/O情報のみ表示
-k ブロック単位からKB単位で表示
-t時間を表示
iostatコマンドの操作

オプション以外にも、更新間隔と更新回数を指定できる。

iostat オプション [表示間隔:sec] [回数]

(例)1秒間隔で5回更新し、KB単位で表示させる

iostat -k 1 5
項目内容
%userユーザープロセスのCPU使用時間の割合
%nice優先度が変更されたプロセスの使用時間の割合
%systemカーネルのCPU使用時間の割合
%iowaitディスクI/O待ちの時間の割合
%stealゲストOSがCPUを割り当てられなかった時間の割合
%idleCPUがアイドル状態である時間の割合
tpsI/O転送リクエスト数/sec
kB_read/sデバイスから読み出した量[KB/sec]
kB_wrtn/sデバイスから書き込んだ量[KB/sec]
kB_readデバイスから読み出した量[KB]
kB_wrtnデバイスから書き込んだ量[KB]
iostatコマンドの表示項目
Linux 5.4.0-1103-aws (ip-172-31-31-189)         02/06/24        _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.11    0.01    0.12    0.16    0.01   99.60

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.46         0.46         0.00    7804998          0
loop1             0.06         0.06         0.00    1093529          0
loop2             0.24         0.24         0.00    4084410          0
loop3             0.70         0.70         0.00   11807206          0
loop4             0.00         0.00         0.00      29832          0
loop5             1.65         1.65         0.00   27986159          0
loop6             0.19         0.19         0.00    3161328          0
loop7             0.00         0.00         0.00         29          0
xvda              4.53       100.78         6.37 1706712231  107937885

topコマンドみたいなiotopコマンド

iostatコマンド同様、I/O情報を表示。プロセス毎のI/O情報を確認できる。

コマンドが見つからない場合は、パッケージのインストールを行う(下記はUbuntuの場合)。

sudo apt install iotop

あまり使用しないため、省略。

システム統計情報を確認できるsarコマンド

sarコマンドは、色々なシステム統計情報をレポートしてくれる。Linux にデフォルトでインストールされているコマンドラインプログラムで、SADC (System Activity Data Collector) と SAR (System Activity Reporter) のから構成されている。長時間にわたり自動的にデータを収集して、そのデータが後で分析できるよう設計されている。SAR により収集されるデータは、累積統計カウンタレポートとなる。

実際に格納されているデータは、”/var/log/sysstat/”以下のディレクトリの”saXX”となっているファイルであり、ここにログが格納される。”saXX”のXXは日付であり、ログ取得日の日付が6日であれば、”sa06″となる。また、sysstatサービスを有効にする必要がある。sysstatサービスを有効にするには、sysstatファイルのENABLEDを”true”へ変更する。

sudo vi /etc/default/sysstat
#
# Default settings for /etc/init.d/sysstat, /etc/cron.d/sysstat
# and /etc/cron.daily/sysstat files
#

# Should sadc collect system activity informations? Valid values
# are "true" and "false". Please do not put other values, they
# will be overwritten by debconf!
ENABLED="false" -> "true"へ変更
sudo systemctl restart sysstat

コマンドオプション

オプション内容
-Aすべての項目を表示
-bディスクの入出力、転送レートの情報を表示
-cプロセスの生成回数を表示
-f ファイル名ログファイルを指定
-n DEVネットワーク関連の情報を表示
-n EDEVネットワーク関連のエラー情報を表示
-rメモリ及びスワップの情報を表示
-uCPUの情報を表示
-P id/ALLCPU毎の情報を表示
-Rメモリの統計情報を表示
-Wスワップの情報を表示
sarコマンドのオプション

(例)ファイルを指定して、ディスク入出力と転送レートの情報を表示させる。

sar -b -f /var/log/sysstat/sa06

表示項目(オプション”-b”の場合)

表示項目内容
tpsI/O転送リクエスト数/sec
rtpsディスク読み込みリクエスト数/s
wtpsディスク書き込みリクエスト数/s
bread/sディスク読み込みブロック数/s
bwrtn/sディスク書き込みブロック数/s
sarコマンドの表示項目
 sar -b
15:05:01          tps      rtps      wtps   bread/s   bwrtn/s
15:15:01         0.61      0.27      0.34     18.65      4.55
15:25:01         0.75      0.17      0.58      8.94      7.91
Average:         0.68      0.22      0.46     13.79      6.23

表示項目(オプション”-n DEV”の場合)

表示項目内容
IFACEネットワークインターフェース名
rxpck/s受信パケット数[パケット数/s]
txpck/s送信パケット数[パケット数/s]
rxkB/s受信サイズ[KB/s]
txkB/s送信サイズ[KB/s]
rxcmp/s圧縮パケットの受信サイズ[byte/s]
txcmp/s圧縮パケットの送信サイズ[byte/s]
rxmcst/sマルチキャストパケットの受信パケット数[パケット数/s]
%ifutilネットワークインタフェースの利用率
sarコマンドの表示項目
 sar -n DEV
15:05:01        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
15:15:01         eth0      1.61      1.56      0.41      0.34      0.00      0.00      0.00      0.00
15:15:01           lo      0.65      0.65      0.16      0.16      0.00      0.00      0.00      0.00
15:25:01         eth0      1.96      1.88      0.45      0.41      0.00      0.00      0.00      0.00
15:25:01           lo      0.86      0.86      0.21      0.21      0.00      0.00      0.00      0.00
Average:         eth0      1.78      1.72      0.43      0.38      0.00      0.00      0.00      0.00
Average:           lo      0.75      0.75      0.19      0.19      0.00      0.00      0.00      0.00

表示項目(オプション”-n EDEV”の場合)

表示項目内容
IFACEネットワークインターフェース名
rxerr/s受信エラーパケット数[パケット数/s]
txerr/s送信エラーパケット数[パケット数/s]
coll/sコリジョンパケット数[パケット数/s]
rxdrop/sバッファ不足で受信の取りこぼしがあったパケット数[パケット数/s]
txdrop/sバッファ不足で送信の取りこぼしがあったパケット数[パケット数/s]
rxcarr/s送信時のキャリアエラーパケット数[パケット数/s]
rxfram/s受信時のフレーム同期のエラーパケット数[パケット数/s]
rxfifo/s受信時のFIFOオーバーランパケット数[パケット数/s]
txfifo/s送信時のFIFOオーバーランパケット数[パケット数/s]
sarコマンドの表示項目
 sar -n EDEV
15:05:01        IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
15:15:01         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15:15:01           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15:25:01         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15:25:01           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

表示項目(オプション”-r”の場合)

表示項目内容
kbmemfree空きメモリ容量[KB]
kbmemused使用中のメモリ容量[KB]
%memusedメモリの使用率
kbbuffersバッファ使用量[KB]
kbcachedキャッシュ使用量[KB]
kbcommit現在必要とされているメモリの総量[KB]
%commitRAMとスワップのメモリの総量が必要としているメモリ量の割合[%]
kbactive“active”なメモリの容量[KB]
kbinact“inactive”なメモリの容量[KB]
kbdirty“dirty”なメモリの容量[KB]
sarコマンドの表示項目
 sar -r
15:05:01    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
15:15:01         8504    134104    473700     98.24     17716    183416    996020    206.56    299952     59824       176
15:25:01         6076    134080    476128     98.74     19104    184440    996024    206.56    299348     62944       148
Average:         7290    134092    474914     98.49     18410    183928    996022    206.56    299650     61384       162

Linuxのメモリ管理では、最近使用したファイルの情報をメモリ上にキャッシュし、再度同じファイルにアクセスがあった場合に、キャッシュの情報を利用することで、アクセスが高速化される。ページキャッシュには、ページの利用頻度によって”active”と”inactive”の状態に分けられる。メモリ不足に陥ると、ページが解放される。”dirty”は、ページがディスクに同期されていない状態、またはまだ書き込みが行われていない状態のこと。ディスクと同期中の場合は、”writeback”となる。

ログ出力するsadfコマンド

sadcのログをタブ区切りのテキストやXML形式で出力できる。

sadf [オプション] - [sarコマンドのオプション]
表示項目内容
-jJSON形式で出力
-xXML形式で出力
-tUTFではなく、ローカル日時で表示
ここから後のオプションはsarコマンドに渡す
sadf コマンドの表示項目

システムの状態を確認できるuptimeコマンド

uptimeコマンドは、システムの稼働時間やログインユーザー数、平均負荷などを表示。表示される内容は、topコマンドの1行目の情報と同じ。

 16:11:56 up 196 days,  4:15,  1 user,  load average: 0.00, 0.00, 0.00

ユーザー毎のプロセス情報を確認できるwコマンド

wコマンドは、ログインユーザーと他ユーザーのプロセス情報を表示する。ユーザーを指定することで、そのユーザーの情報のみを表示することもできる。

オプション

表示項目内容
-hヘッダを表示しない
-sログイン時刻、JCPU、PCPUを表示しない
-u現在のプロセス時間とCPU時間を計算する際に、ログイン名と現在のユーザー名の違いを無視
-fリモートホスト名を表示しない
wコマンドのオプション
w [オプション] [ユーザー名]

表示項目

表示項目内容
USERユーザー名
TTY端末名
FROMリモートホスト
LOGIN@ログイン時刻
IDLEアイドル時刻
JCPU当該端末から実行されているすべてのプロセスが消費したCPU時間
PCPUWHAT欄に表示されている現在のプロセスが消費したCPU時間
WHAT実行されているコマンド
wコマンドの表示項目

1行目は、topコマンドの1行目の情報と同じ。

 16:19:22 up 196 days,  4:22,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ubuntu   pts/0    220.106.51.144   16:11    1.00s  0.04s  0.00s w

CPUの使用率を詳細に測定できるpsコマンド

psコマンドは、プロセス単位の情報を確認できるため、top、vmstatなどのコマンドよりも詳細な情報を使ってCPUの使用率を測定できる。

オプション内容
a端末上の全プロセスを表示
e環境変数も表示
x制御端末がないプロセスも表示
u実行ユーザー名等も表示
r実行中のプロセスのみ表示
l長いフォーマットで表示
U ユーザー名ユーザー名を指定
-C コマンドコマンド名を指定
-c全プロセスを表示
-f完全なフォーマットで表示
-lロング形式で表示
-p PIDPIDを指定
-t tty端末名を指定
-u UIDユーザーIDを指定
psコマンドの表示項目

(例)すべてのプロセスをユーザー名等も含めて表示

ps aux

表示項目(オプション”u”の場合)

表示項目内容
USERユーザー名
PIDプロセスID
%CPUCPU使用率
%MEMメモリ使用率
VSZプロセスが使用できるメモリ量
RSS現在使用中のメモリ量
TTY制御端末名
STATプロセスの状態と優先度
START実行開始時間
TIME使用CPU時間
COMMAND実行コマンド
psコマンドの表示項目
ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
ubuntu   30526  0.0  0.6  23224  3080 pts/0    Ss+  14:45   0:00 -bash
ubuntu   30998  0.0  1.0  23224  5076 pts/1    Ss   16:00   0:00 -bash
ubuntu   31019  0.0  0.7  40100  3520 pts/1    R+   16:01   0:00 ps u
.
.
.

表示項目(オプション”l”の場合)

表示項目内容
Fプロセスに関するフラグ
UIDユーザーID
PIDプロセスID
PPID親プロセスのプロセスID
PRIプロセスの優先度
NIプロセスのNice値
VSZプロセスが使用できるメモリ量
RSS現在使用中のメモリ量
WCHANプロセスが休止状態である場合に止まっている場所
STATプロセスの状態と優先度
TTY制御端末名
TIME使用CPU時間
COMMAND実行コマンド
psコマンドの表示項目
ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0 225476  4884 -      Ss   ?          3:41 /sbin/init
1     0     2     0  20   0      0     0 -      S    ?          0:00 [kthreadd]
1     0     3     2   0 -20      0     0 -      I<   ?          0:00 [rcu_gp]
.
.
.

表示項目(オプション”-l”の場合)

表示項目内容
Fプロセスに関するフラグ
Sプロセスの状態
O:実行中
S:休止状態
R:実行可能状態
I:アイドル状態
Z:ゾンビ状態
UIDユーザーID
PIDプロセスID
PPID親プロセスのプロセスID
CCPU使用率
PRIプロセスの優先度
NIプロセスのNice値
ADDRメモリアドレス
SZプロセスが確保しているメモリ量
WCHANプロセスが休止状態である場合に止まっている場所
TTY制御端末名
TIME使用CPU時間
CMD実行コマンド
psコマンドの表示項目
ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY        TIME CMD
4 S     0   914     1  0  80   0 -  3668 -      ttyS0      0:00 /sbin/agetty -o -p -- \u --keep-baud 1
4 S     0   916     1  0  80   0 -  3724 -      tty1       0:00 /sbin/agetty -o -p -- \u --noclear tty
0 S  1000 30526 30525  0  80   0 -  5806 wait   pts/0      0:00 -bash
.
.
.

プロセスの親子関係を確認できるpstreeコマンド

pstreeコマンドは、プロセスのツリーを表示する。

オプション内容
-aプロセス起動時の引数を表示
-c同じ内容のサブツリーをまとめない
-h現在のプロセスと先祖プロセスを強調して表示
-l長いフォーマットで表示
-n同じ親を持つプロセス同士をPIDでソート
-pPIDを表示
-uuidの遷移を表示
-UUTF-8の罫線文字を使用
pstreeコマンドの表示項目
systemd─┬─accounts-daemon───2*[{accounts-daemon}]
        ├─acpid
        ├─2*[agetty]
        .
        .
        .

メモリとスワップの使用量を確認できるfreeコマンド

先に記述したtopコマンドやsarコマンドでも測定できるが、freeコマンドでもメモリとスワップの使用量を測定できる。

オプション内容
-bbyte単位で表示
-kKB単位で表示
-mMB単位で表示
-t物理メモリとスワップメモリの合計行を表示
-oバッファ分を増減した行を表示させない
-s sec更新する間隔[sec]
freeコマンドのオプション

表示項目

オプション内容
Mem : total搭載している物理メモリ容量(バッファキャッシュとページキャッシュを含める)
Mem : used現在使用しているメモリ容量(バッファキャッシュとページキャッシュを含めない)
Mem : free空きメモリ容量(バッファキャッシュとページキャッシュを含めない)
Mem : shared共有メモリ容量
Mem : buff/cacheバッファキャッシュ及びページキャッシュ
Mem : availableアプリケーション起動時に利用可能な物理メモリ
Swap : totalスワップ領域容量の合計
Swap : used現在使用しているスワップ領域容量
Swap : free空きスワップ領域容量
freeコマンドの表示項目
              total        used        free      shared  buff/cache   available
Mem:         482204      237876       14712       92772      229616      139096
Swap:             0           0           0

Linuxでは、使用されていない物理メモリを可能な限りキャッシュに割り当てため、起動時間が長くなればなるほど、空きメモリ容量(Mem : free)が小さくなっていく。ただし、空きメモリ容量が小さくても、キャッシュに割り当てられているサイズが大きい場合は、実際にメモリが足りないわけではない。実際に利用可能なメモリ容量を確認するには、”available”を確認する。

スワップは、物理メモリが不足する場合に、ディスクの一部を仮想的なメモリとして利用する機能で、スワップ領域が継続的に使用されていれば、システムのパフォーマンスは低下する。よって、システムが使用しているメモリ量を測定し、把握しておくことが重要となる。仮にスワップ領域が頻繁に使用されいるようであれば、不要なサービスを停止させるか、メモリを増設させる必要がある。

メモリの詳細の情報を確認できるファイル

“/prec/meminfo”を参照するとメモリの情報を詳細に確認できる。

MemTotal:         482204 kB
MemFree:           10668 kB
MemAvailable:     143024 kB
Buffers:           18044 kB
Cached:           186452 kB
.
.
.

ディスク使用量を確認できるdfコマンド

オプション内容
-aすべてのファイルシステムの情報を表示
-h適切な単位で表示(1[MB] = 1024[KB])
-H適切な単位で表示(1[MB] = 1,000[KB])
-iiノードの使用状況を表示
-lローカルファイルシステムのみ表示
-mMB単位で表示
-Tファイルシステムのタイプを表示
dfコマンドの表示項目
df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            222M     0  222M   0% /dev
tmpfs            48M  844K   47M   2% /run
/dev/xvda1       30G  9.4G   20G  33% /
.
.
.

ファイルシステムがext2、ext3、ext4であった場合は、残っているiノードに気を付ける必要がある。iノードは、ファイルの管理情報を格納していて、ファイルシステムの作成時に、一定の数用意される。もしすべてのiノードが使用された場合、ディスク容量に空きがあったとしても、新規にファイルやディレクトリが作成できないため、iノードの使用状況の確認もしておいた方が良い。

df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
udev             56632    305   56327    1% /dev
tmpfs            60275    500   59775    1% /run
/dev/xvda1     3840000 509285 3330715   14% /
.
.
.

ネットワークトラフィックを確認できるnetstatコマンド

ネットワークトラフィックのパフォーマンスは、Netperfなどのベンチマークツールで測定できる。NFSやFTPで容量の大きいファイルを転送し、かかった時間を計測することでネットワークトラフィックのパフォーマンスを測定することもできる。

オプション内容
-r, –routeルーティングテーブルを表示
-i, –interfacesインターフェーステーブルを表示
-g, –groupsマルチキャストグループのメンバーを表示
-s, --statisticsSNMPと同じようにプロトコルごとのネットワーク統計を表示
-M, --masqueradeマスカレード接続を表示
-v, --verbose詳細に表示
-W, --wideIPアドレスを切り捨てずに表示
-n, --numeric名前解決せずに表示
--numeric-hostsホスト名を解決にせずに表示
--numeric-portsポート名を解決せずに表示
--numeric-usersユーザー名を解決せずに表示
-N, --symbolicハードウェア名の解決を行う
-e, --extend その他詳細な情報を表示
-p, --programsソケットのPID/プログラム名を表示
-o, --timersタイマーを表示
-c, --continuousLISTENINGを連続する
-l, --listeningLISTEN状態のサーバー、ソケットのみ表示
-a, --all display all sockets (default: connected) すべてのソケットを表示
-F, --fib転送情報ベースを表示(デフォルト)
-C, --cacheFIBの代わりにルーティングキャッシュを表示
-Z, --contextソケットの SELinux セキュリティコンテキストを表示
netstatコマンドのオプション

表示項目

“RX-DRP”、”TX-DRP”の値が大きい場合は、受信時や転送時に取りこぼしが多いため何かしらの問題が発生している可能性がある。

表示項目内容
Ifaceインターフェース名
MTU
RX-OK受信成功数
RX-ERR受信エラー数
RX-DRP受信時の取りこぼし数
RX-OVR
TX-OK転送成功数
TX-ERR転送エラー数
TX-DRP転送時の取りこぼし数
TX-OVR
Flg
dfコマンドの表示項目
netstat -i
Kernel Interface table
Iface      eth0      9001 31323037      0      0 0      30339019      0      0      0 BMRU
lo       65536 15829052      0      0 0      15829052      0      0      0 LRU

プロトコルごとの統計情報を表示

netstat -s
Ip:
    Forwarding: 2
    43931289 total packets received
    6 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    43897424 incoming packets delivered
    45878096 requests sent out
    8 outgoing packets dropped
    1 dropped because of missing route
Icmp:
    3034 ICMP messages received
    23 input ICMP message failed
    ICMP input histogram:
        destination unreachable: 2976
        timeout in transit: 58
    20 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 20
IcmpMsg:
        InType3: 2976
        InType11: 58
        OutType3: 20
Tcp:
    1380358 active connection openings
    464784 passive connection openings
    36909 failed connection attempts
    94589 connection resets received
    4 connections established
    32865502 segments received
    35621808 segments sent out
    1577050 segments retransmitted
    21 bad segments received
    3010772 resets sent
Udp:
    11028868 packets received
    20 packets to unknown port received
    0 packet receive errors
    11029694 packets sent
    0 receive buffer errors
    0 send buffer errors
.
.
.

ssコマンドのオプション”-s”によって、接続状態の統計を見ることができる。

ss -s
Total: 152 (kernel 0)
TCP:   9 (estab 3, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*         0         -         -
RAW       1         0         1
UDP       3         3         0
TCP       9         8         1
INET      13        11        2
FRAG      0         0         0

スループットを計測できるnetserverコマンド

Netperfを利用することで、2つのホスト間でネットワークのスループットを計測することができる。サーバー側は、netserverコマンドで接続を待ち受ける。デフォルトのポートは”12865″。

パケット数を確認できるiptablesコマンド

iptablesでパケットフィルタリングを行っている場合は、iptablesコマンドにオプションを加えることで、ルールにマッチしたパケット数やバイト数を表示できる。

sudo iptables -L -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  44M   12G ufw-before-logging-input  all  --  any    any     anywhere             anywhere
  44M   12G ufw-before-input  all  --  any    any     anywhere             anywhere
    0     0 ufw-after-input  all  --  any    any     anywhere             anywhere
    0     0 ufw-after-logging-input  all  --  any    any     anywhere             anywhere
    0     0 ufw-reject-input  all  --  any    any     anywhere             anywhere
    0     0 ufw-track-input  all  --  any    any     anywhere             anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ufw-before-logging-forward  all  --  any    any     anywhere             anywhere
    0     0 ufw-before-forward  all  --  any    any     anywhere             anywhere
    0     0 ufw-after-forward  all  --  any    any     anywhere             anywhere
    0     0 ufw-after-logging-forward  all  --  any    any     anywhere             anywhere
    0     0 ufw-reject-forward  all  --  any    any     anywhere             anywhere
    0     0 ufw-track-forward  all  --  any    any     anywhere             anywhere

Chain OUTPUT (policy ACCEPT 5676 packets, 373K bytes)
 pkts bytes target     prot opt in     out     source               destination
  46M   11G ufw-before-logging-output  all  --  any    any     anywhere             anywhere
  46M   11G ufw-before-output  all  --  any    any     anywhere             anywhere
2286K  169M ufw-after-output  all  --  any    any     anywhere             anywhere
2286K  169M ufw-after-logging-output  all  --  any    any     anywhere             anywhere
2286K  169M ufw-reject-output  all  --  any    any     anywhere             anywhere
2286K  169M ufw-track-output  all  --  any    any     anywhere             anywhere
.
.
.

ubuntu

記事を読んでいただきありがとうございました。

Page Top