【 ss 】コマンド――ネットワークのソケットの情報を出力するLinux基本コマンドTips(150)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ネットワークのソケットの情報などを出力する「ss」コマンドです。

» 2017年10月06日 05時00分 公開
[西村めぐみ@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ネットワークのソケットの情報などを出力する「ss」コマンドです。

ssコマンドとは?

 「ss」コマンドは、ネットワーク通信で利用する「ソケット」についての情報などを出力するコマンドです ※1。従来はnetstatコマンドが使用されていましたが、現在はssコマンドへの移行が進んでいます。

 ipコマンド(連載第146回第149回)と同じiproute2パッケージに、収録されています ※2。

※1 ネットワーク通信を行うアプリケーションソフトウェアでは、TCPやUDPなどの(トランスポート層の)プロトコルを直接利用するのではなく、ソケットと呼ばれるAPIを通じて間接的に利用し、開発の手間を省くことが多い。サーバ側とクライアント側ではソケットの使い方が一部異なる。サーバ側では(TCP)ソケットの生成後、LISTEN用のポートにバインド、LISTEN実行、クライアントからのコネクションの受け付け、通信実行、ソケットのクローズというように処理が進む。クライアント側は(TCP)ソケットの生成後、サーバと接続、通信実行、ソケットのクローズというように進む。
※2 CentOS 7では「iproute」という名前で提供されている。Ubuntu 17では「iproute2」。移行用にiprouteという名前のダミーパッケージも併せて提供されている。





ssコマンドの書式

ss [オプション] [フィルター]

※[ ]は省略可能な引数を示しています。




ssの主なオプション(表示対象関係)

短いオプション 長いオプション 意味
-f ソケット --family ソケット 表示するソケットの種類(ファミリー)をunix、inet、inet6、link、netlinkから指定する
-x --unix UNIXドメインソケットを表示(-f unix相当)
-4 --ipv4 IPv4のソケットだけを表示(-f inet相当)
-6 --ipv6 IPv6のソケットだけを表示(-f inet6相当)
-0 --packet パケットソケットを表示(-f link相当)
-t --tcp TCPソケットを表示
-u --udp UDPソケットを表示
-d --dccp DCCPソケットを表示
-w --raw RAWソケットを表示
-a --all 接続待ち状態(LISTEN)のソケットと接続待ち状態にないソケットの両方を表示する
-l --listening 接続待ち状態のソケットだけを表示する
-N ネームスペース --net=ネームスペース 指定したネームスペースに切り替える
-A クエリ --query=クエリ, --socket=クエリ 対象をカンマ区切りで指定する(all、inet、tcp、udp、raw、unix、packet、netlink、unix_dgram、unix_stream、unix_seqpacket、packet_raw、packet_dgramから選択)
-F ファイル名 --filter=ファイル名 フィルターの指定をファイルから読み込む

ssの主なオプション(表示内容関係)

短いオプション 長いオプション 意味
-n --numeric サービス名の名前解決を行わない(ポート番号を表示)
-r --resolve 名前解決を行う
-e --extended 詳細情報を表示
-o --options タイマー情報も表示する
-m --memory 各ソケットのメモリの使用量も表示する
-p --processes ソケットを使用しているプロセスも表示する
-Z --context -pオプションに加えてセキュリティコンテキストも表示(SELinux)
-z --contexts -Zオプションに加えてソケットコンテキストも表示(SELinux)
-i --info 内部TCPの情報も表示する
-s --summary ソケットの種類ごとに本数を表示する
-D ファイル名 --diag=ファイル名 RAW情報をファイルに出力する(画面には何も出力しない)


ソケットの状態を表示する

 「ss」で現在のソケットの状態(State)を表示します(画面1ではheadコマンドで冒頭部分だけを出力)。「-t」でTCPソケットのみ、「-u」でUDPソケットのみを表示します。「ss -tu」のように同時に指定することも可能です。

コマンド実行例

ss

(ソケットなどの状態を表示)(画面1

ss -t

(TCPソケットの状態を表示)(画面1

ss -u

(UDPソケットの状態を表示)

ss -tu

(TCPとUDPの両方のソケットの状態を表示)


画面1 画面1 ソケットなどの情報を表示したところ


接続待ち(LISTEN)のソケットも表示する

 「ss」では接続中あるいは終了処理を行っているなど、何らかの動きがあるソケットを表示します。これに対し、「-l」オプションを使うと接続待ちをしているソケットを表示します。「-a」オプションでは両方を表示します。

コマンド実行例

ss -l

(接続待ちのソケットだけを表示)

ss -a

(接続待ちを含めた全てを表示する)

ss -tl

(TCPで接続待ちのソケットを表示)(画面2


 画面2ではTCPソケットの状態を表示しています。3行目にあるように現在、他のPCとsshで接続(ESTABlish)していることが分かります。

画面2 画面2 TCPソケットをさまざまな条件で表示したところ


プロセスも表示する

 「-p」オプションでソケットと結びついたプロセスを同時に表示します。画面3では、Firefoxとyum update(rootユーザー)の処理中に「ss -tp」を実行しました。

 プロセスによっては一般ユーザーでは表示されないものもあります。タイミングは若干異なりますが、画面4では画面3と同じくFirefoxとyum updateを実行中に、rootユーザーで「ss -tp」を実行しています。図3には表示されていなかった、yum updateのプロセス(urlgrabber...)という行が現れました。

コマンド実行例

ss -p

(接続の状態をプロセス付きで表示)

ss -tp

(TCPの接続状態をプロセス付きで表示)(画面3画面4


画面3 画面3 ソケットとプロセスを同時に表示したところ(一般ユーザー)
画面4 画面4 ソケットとプロセスを同時に表示したところ(rootユーザー)


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。