モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

*statコマンドの基本的な使い方

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

公開日公開日
2014/10/27
最終更新最終更新
2019/11/05
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    週末エンジニア

    0
    ステッカーを贈るとは?

    「何とかstat」というコマンドがたくさんあります。よく使うものの基本的な使用方法をまとめます。

    iostat (I/Oデバイスの統計情報)

    システムが認識する各デバイスのI/Oの使用状況を調査するコマンドです。補足情報としてCPUの使用状況「%user, %system, %iowait, %idle」も合わせて出力されます。

    5秒毎に表示

    $ iostat 5
    

    5秒毎に10回表示

    $ iostat 5 10
    

    通常は "-x" (extended) オプションを付与して、出力内容を詳細なものにしたほうがよいです。

    $ iostat -x 5 10
    

    r/s

    "read request per second" の意味で、一秒間あたりの読み込みリクエスト数です。

    w/s

    "write request per second" の意味で、一秒間あたりの書き込みリクエスト数です。

    avgrq-sz

    "average request size" の意味で、読み書きリクエストあたりの平均セクタ数です。セクタは記憶装置がデータを記録する際の最小単位で、512バイトだったり2048バイトだったりします。

    avgqu-sz

    "average queue size" の意味で、処理待ち状態にある読み書きリクエストの平均個数です。

    await

    "average wait" の意味で、「待ちおよび処理」にかかった時間の平均値です。単位はミリセカンド。

    %util

    "utilization" の意味で、I/OデバイスがCPUによって使用されていた時間の割合です。

    EBS などをマウントしていると Device が複数表示されます。

    $ iostat -x
    Linux 3.14.35-28.38.amzn1.x86_64 (yourhostname)   2015年05月26日  _x86_64_        (1 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.24    0.00    0.03    0.01    0.02   99.69
    
    Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    xvda              0.00     0.33    0.03    0.42     0.97     7.04    18.00     0.00    0.63   0.30   0.01
    xvdf              0.00     0.05    0.00    0.00     0.00     0.78   216.17     0.00   93.69   1.81   0.00
    

    %util はデバイス毎に考える概念です。例えば /data にマウントした xvdf の disk utilization が限界の 100% に仮になったとしても OS が使用する root ボリューム xvda とは関係がないため OS に迷惑がかかることはありません。CPU の iowait が高いことが判明したら、具体的にどのデバイスの %util が高くなっているのかを調査するようにしましょう。

    vmstat (仮想メモリの統計情報)

    "virtual memory statics" の意味で、仮想メモリの使用状況を調査するコマンドです。補足情報として「プロセス、I/O、CPUなど」の情報も出力されます。

    1秒間隔で10回表示

    $ vmstat 1 10
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     0  0      0 324200  39216  69748    0    0     1     1    9   12  0  0 100  0  0
    ...
    

    procs

    • r: "The number of processes waiting for run time" の意味で、実行待ちプロセスの個数です。PCのCPUコア数と比較して大きくなると問題です

    swap

    物理的なメモリの容量が不足してくると、OSはスワップという機能を用いてハードディスク上に仮想メモリ領域 (スワップ領域) を確保します。参照される頻度が高くなれば物理メモリに読み出し (スワップイン) たり、あまり参照されない物理メモリ上のデータをスワップ領域に書き出し (スワップアウト) たりします。

    • si: "swap in" の意味で、一秒間あたりにスワップインされたメモリの容量です。単位は環境に依存します
    • so: "swap out" の意味で、一秒間あたりにスワップアウトされたメモリの容量です。単位は環境に依存します

    memory

    • swpd: スワップ領域のサイズ。物理的なメモリが不足してくると大きくなります
    • free: 全く使用されておらずIDLE状態にあるメモリのサイズ
    • buff: バッファとして確保されたメモリのサイズ。OSが様々な処理をする際の緩衝領域として多目的に有効活用されます
    • cache: キャッシュとして確保されたメモリのサイズ。OSが様々な処理をする際の一時記憶領域として多目的に有効活用されます。例えば、キャッシュしておくことでディスクアクセスの回数を減らしたりします

    io

    • bi: "blocks + in" の意味で、一秒間あたりにI/Oデバイスから読み出したブロック数です
    • bo: "blocks + out" の意味で、一秒間あたりにI/Oデバイスに書き込んだブロック数です

    system

    • cs: "context switch" の意味で、一秒間あたりに発生したコンテキストスイッチの回数です。

    cpu

    • us: "user" の意味。ユーザプロセスのCPU使用率
    • sy: "system" の意味。システムプロセスのCPU使用率
    • id: "idle" の意味。CPUが使用されていない時間の割合
    • wa: "wait" の意味。I/O待ちに使用した時間の割合

    pidstat (プロセスの統計情報)

    以下のコマンドが基本です。詳しくは "man pidstat" を参照してください。

    CPU使用状況を表示

    $ pidstat
    

    I/Oデバイス使用状況を表示

    $ pidstat -d
    

    1秒間隔で10回、PIDを指定して表示

    $ pidstat -d -p 1091 1 10
    

    dstat (多機能な統計情報レポートツール)

    iostat, vmstatなどを統合したようなPython製のコマンドです。他のstatファミリーと異なり、dstatはsysstatパッケージに含まれていません。例えば以下のようにしてインストールする必要があります。

    $ yum install dstat
    

    一時間分を1秒毎にCSVファイルに出力

    $ dstat --output file.csv 1 3600
    

    各種オプション

    基本は以下のオプションの組み合わせです。プラグインを導入すると例えばmysqlの統計情報も取得できます。詳細は "man dstat" を参照してみてください。

    時刻情報

    "-t" で現在時刻、"-T" でUNIX時間を出力します。

    $ dstat -tT
    ----system---- --epoch---
      date/time   |  epoch
    26-10 22:06:54|1414328815
    

    CPU

    $ dstat -c
    ----total-cpu-usage----
    usr sys idl wai hiq siq
      0   0 100   0   0   0
    

    ディスクI/O

    $ dstat -d
    -dsk/total-
     read  writ
    1628B  909B
    

    ページング (スワップ)

    dstat -g
    ---paging--
      in   out
       0     0
    

    ロードアベレージ

    $ dstat -l
    ---load-avg---
     1m   5m  15m
       0    0    0
    

    メモリ

    $ dstat -m
    ------memory-usage-----
     used  buff  cach  free
    79.9M 41.6M  188M  190M
    

    ネットワーク

    $ dstat -n
    -net/total-
     recv  send
      60B  202B
    

    I/Oリクエスト数

    $ dstat -r
    --io/total-
     read  writ
    0.08  0.14
    

    コンテキストスイッチ

    $ dstat -y
    ---system--
     int   csw
      10    12
    

    topコマンド関連

    他のユーザのプロセス情報を参照するため、権限が不足している場合は "sudo" を付与して実行するとよいです。

    • --top-cpu: CPUを最も使用しているプロセス情報を表示
    • --top-bio: I/Oとのブロックのやり取り個数が最も多いプロセス情報を表示
    • --top-io: I/Oへのリクエスト回数が最も多いプロセス情報を表示

    netstat (ネットワークの状態を表示)

    ルーティングテーブル

    以下のようにすることでルーティングテーブルを表示できます。/sbin/ip route で代用することが推奨されています。

    $ netstat -r
    

    ソケットの使用状況

    以下のようにすることでソケットの使用状況を表示できます。オプション "-p" でプロセス情報を閲覧する権限が必要になるため sudo を付与しておくとよいです。macOS の場合などは lsof が便利です。

    $ sudo netstat -atup
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
    tcp        0      0 *:mysql                     *:*                         LISTEN      1092/mysqld
    tcp        0      0 *:ssh                       *:*                         LISTEN      954/sshd
    tcp        0      0 localhost:smtp              *:*                         LISTEN      1184/master
    tcp        0     52 192.168.56.10:ssh           192.168.56.1:52138          ESTABLISHED 1238/sshd
    tcp        0      0 *:http                      *:*                         LISTEN      1194/httpd
    tcp        0      0 *:ssh                       *:*                         LISTEN      954/sshd
    tcp        0      0 localhost:smtp              *:*                         LISTEN      1184/master
    udp        0      0 *:bootpc                    *:*                                     785/dhclient
    

    オプションの意味

    • -a: すべてのソケットを表示。例えば状態が "ESTABLISHED" だけでなく "LISTEN" のものも表示される
    • -tu: TCPまたはUDPのソケットのみを表示
    • -p: ソケットを使用しているプログラムの情報を表示 (システムプロセスの情報を表示するためにはroot権限が必要)
    • -n: 文字列ではなく数値で表示 (例えば *:mysql ではなく 0.0.0.0:3306 となります)
    • -l: LISTEN しているソケットのみ表示 (便利な組み合わせ: -ltn)

    サーバ接続がうまくいかない場合、ポートが本当に開いているかをサーバ側で調査する際に

    $ sudo netstat -lptn
    

    は有用です。ちなみに、クライアント側で調査するためには

    $ telnet 192.168.33.101 3306
    

    などとします。通常 3306 は mysqld のポートです。

    表示結果の意味

    • Proto: プロトコル
    • Recv-Q: ユーザプログラムによって読み出されていないデータ容量 (byte)
    • Send-Q: リモートホストによってAckが返されていないデータ容量 (byte)
    • Local Address: ソケットのIPアドレスとポート番号
    • Foreign Address: リモート側のソケットのIPアドレスとポート番号
    • State: TCPにおける状態 (UDPには状態という概念がないため空欄)
    • PID/Program name: ソケットを使用しているプログラムのPIDと名前

    "man netstat" によると将来的には ss というコマンドに置き換えられていく予定とのことです。

    netstat: This program is obsolete. Replacement for netstat is ss.

    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    週末エンジニア

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • 使い所が難しいマイナーな運用コマンド
        コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
        けんちゃんけんちゃん12/1/2022に更新
        いいねアイコン画像0
      • ipコマンドの基本的な使い方
        ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
        こもれびさんこもれびさん3/8/2017に更新
        いいねアイコン画像0
      • プロセス関連のコマンド
        サムネイル画像-7b5901f600
        プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
        kenken12/27/2021に更新
        いいねアイコン画像0
      • rpmとyumのチートシート
        サムネイル画像-f69c6665b8
        rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
        まるたんまるたん3/2/2022に更新
        いいねアイコン画像0
      • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
        メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
        しおまめしおまめ9/30/2017に更新
        いいねアイコン画像0