Linuxコマンド

ssコマンドの使い方と表示の見方

投稿日:

ssコマンドはソケットの情報を表示するコマンドです。今まではnetstatコマンドが使われていたが、netstatコマンドが使えない環境も多くなっているので、ssコマンドも使えるようになった方が良いでしょう。

主なオプション

オプション概要
-xUNIXドメインソケットを表示
-4IPv4のソケットだけを表示
-6IPv6のソケットだけを表示
-tTCPソケットを表示
-uUDPソケットを表示
-a接続待ち状態(LISTEN)のソケットと接続待ち状態ではないソケットの両方を表示
-l接続待ち状態(LISTEN)のソケットだけを表示
state フィルタ名指定した状態のソケットを表示する
-n名前解決を行わない
-eソケットの詳細情報を表示
-pソケットを使用しているプロセスも表示
-i内部のTCP情報も表示
-s統計の概要を表示する

コマンド例

ソケットの種類を指定する

指定したソケットの種類だけに表示を制限する方法を見て見ましょう。

IPv4またはIPv6のソケットの情報だけを表示するには次のように実行します。

# ss -4
# ss -6

TCPまたはUDPのソケットの情報だけを表示するするには次のように実行します。

# ss -t
# ss -u

ソケットの状態を指定する

ソケットには接続待ち(LISTEN)や接続中(ESTAB)といった状態があります(TCPの場合)。次のように実行すると特定の状態を表示することができます。

# ss
# ss -l
# ss -a

ssコマンドを引数なしで実行すると、「接続中(ESTAB)」または「終了処理中(CLOSE-WAIT、FIN-WAIT-2など)」のソケットを表示します。

「-l」オプションを指定すると、「接続待ち(LISTEN)」のソケットだけを表示します。

「-a」オプションを指定すると、接続待ちを含め全ての状態のソケットを表示します。

またstateを使うと、指定した状態のソケットだけ表示することもできます。

# ss -t state established

TCPの状態で指定できるものには以下のものがあります。

established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait,
closed, close-wait, last-ack, listening, closing

その他に指定できるものについてはドキュメントを参照ください。

ポート番号の名前解決を行わない

デフォルトでポート番号は名前解決されて(サービス名で)表示される。これがわかりづらいときは名前解決を行わないで、ポート番号を表示するには「-n」オプションを使います。

# ss -n

オプションを組み合わせて使う

通常は、確認したい情報を絞り込むために、今までのオプションを組み合わせて使います。

# ss -tl
# ss -4tan

最初の例はTCPの接続待ち状態のソケットを表示します。次の例はIPv4のTCPソケット全てを表示します(そして名前解決は行わない)。

そのほかの情報を表示

# ss -e
# ss -p
# ss -i

これらのオプションは、さらにいくつかの情報を確認するために使います。

ssコマンドの表示結果の見方

ssコマンドを実行すると「State」、「Recv-Q」、「Send-Q」、「Local Address:Port」、「Peer Address:Port」、「Process」の情報が表示されます。

# ss -tn | head
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port Process
ESTAB      0      0               127.0.0.1:45856          127.0.0.1:6640
ESTAB      0      0               10.0.2.15:43934          10.0.2.15:5672
ESTAB      0      0               10.0.2.15:6642           10.0.2.15:42370
ESTAB      0      0               10.0.2.15:43760          10.0.2.15:5672
ESTAB      0      0               10.0.2.15:3306           10.0.2.15:53368
ESTAB      0      0               10.0.2.15:58830          10.0.2.15:3306
ESTAB      0      0               10.0.2.15:58836          10.0.2.15:3306
ESTAB      0      0               10.0.2.15:3306           10.0.2.15:58836
ESTAB      8      0               10.0.2.15:33930          10.0.2.15:5672

それぞれの意味は次の通りです。

State

ソケットの状態を表します。ESTAB(接続中)、LISTEN(接続待ち)などの状態を示します。

Recv-QとSend-Q

Recv-QとSend-Qの意味はソケットの状態で意味が変わります。

LISTEN状態の場合、Recv-Qは送信したSYN(でそれに対するACKを受信できていない)の数、Send-Qは最大値です。

ESTAB状態の場合、Send-Qは送信パケットのうち、ACKを受信していないパケットの総byte数、Recv-Qは受信パケットでACKを返していないパケットの総byte数です。

Local Address:PortとPeer Address:Port

「Local Address:Port」と「Peer Address:Port」は、それぞれローカル側とリモート側のソケットの「IPアドレス」と「ポート番号」です。

# ss -ltn
...
LISTEN   0        128              0.0.0.0:22              0.0.0.0:*                
...
LISTEN   0        128                    *:80                    *:*                
...
LISTEN   0        128                 [::]:22                 [::]:*

「0.0.0.0」、「[::]」、「*」は任意のIPアドレスの接続を受け付けるという意味です。「0.0.0.0」はIPv4の任意のIPアドレスを受け付ける、「[::]」はIPv6の任意のIPアドレスを受け付ける、「*」はIPv4とIPv6の任意のIPアドレスを受け付けるという意味です。詳細は調べていませんが、ソケットの作成の仕方が違うんでしょうかね。。。

Process

Processの情報は通常表示されませんが、「-p」を指定するとProcessの状態も確認できます。

-Linuxコマンド

Copyright© アナグマのモノローグ , 2021 All Rights Reserved Powered by STINGER.