【 ss 】コマンド――ネットワークのソケットの情報を出力する:Linux基本コマンドTips(150)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ネットワークのソケットの情報などを出力する「ss」コマンドです。
本連載は、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の両方のソケットの状態を表示)
接続待ち(LISTEN)のソケットも表示する
「ss」では接続中あるいは終了処理を行っているなど、何らかの動きがあるソケットを表示します。これに対し、「-l」オプションを使うと接続待ちをしているソケットを表示します。「-a」オプションでは両方を表示します。
コマンド実行例
ss -l
(接続待ちのソケットだけを表示)
ss -a
(接続待ちを含めた全てを表示する)
ss -tl
(TCPで接続待ちのソケットを表示)(画面2)
画面2ではTCPソケットの状態を表示しています。3行目にあるように現在、他のPCとsshで接続(ESTABlish)していることが分かります。
プロセスも表示する
「-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)
筆者紹介
西村 めぐみ(にしむら めぐみ)
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.