Linux基本コマンドTips一覧
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ネットワークのソケットの情報などを出力する「ss」コマンドです。
ssコマンドの概要
|
書式
|
オプション一覧
ソケットの状態を表示する
接続待ち(LISTEN)のソケットも表示する
プロセスも表示する
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という名前のダミーパッケージも併せて提供されている。
-A クエリ
--query=クエリ, --socket=クエリ
対象をカンマ区切りで指定する(all、inet、tcp、udp、raw、unix、packet、netlink、unix_dgram、unix_stream、unix_seqpacket、packet_raw、packet_dgramから選択)
-F ファイル名
--filter=ファイル名
フィルターの指定をファイルから読み込む
ssの主なオプション(表示内容関係)
短いオプション
長いオプション
--numeric
サービス名の名前解決を行わない(ポート番号を表示)
--resolve
名前解決を行う
--extended
詳細情報を表示
--options
タイマー情報も表示する
--memory
各ソケットのメモリの使用量も表示する
--processes
ソケットを使用しているプロセスも表示する
--context
-pオプションに加えてセキュリティコンテキストも表示(SELinux)
--contexts
-Zオプションに加えてソケットコンテキストも表示(SELinux)
--info
内部TCPの情報も表示する
--summary
ソケットの種類ごとに本数を表示する
-D ファイル名
--diag=ファイル名
RAW情報をファイルに出力する(画面には何も出力しない)
ソケットの状態を表示する
「
ss
」で現在のソケットの状態(State)を表示します(
画面1
ではheadコマンドで冒頭部分だけを出力)。「-t」でTCPソケットのみ、「-u」でUDPソケットのみを表示します。「ss -tu」のように同時に指定することも可能です。
コマンド実行例
(ソケットなどの状態を表示)(
画面1
)
ss -t
(TCPソケットの状態を表示)(
画面1
)
ss -u
(UDPソケットの状態を表示)
ss -tu
(TCPとUDPの両方のソケットの状態を表示)
画面1 ソケットなどの情報を表示したところ
目次に戻る
接続待ち(LISTEN)のソケットも表示する
「ss」では接続中あるいは終了処理を行っているなど、何らかの動きがあるソケットを表示します。これに対し、「-l」オプションを使うと接続待ちをしているソケットを表示します。「-a」オプションでは両方を表示します。
コマンド実行例
ss -l
(接続待ちのソケットだけを表示)
ss -a
(接続待ちを含めた全てを表示する)
ss -tl
(TCPで接続待ちのソケットを表示)(
画面2
)
画面2
ではTCPソケットの状態を表示しています。3行目にあるように現在、他のPCとsshで接続(ESTABlish)していることが分かります。
画面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 ソケットとプロセスを同時に表示したところ(一般ユーザー)
画面4 ソケットとプロセスを同時に表示したところ(rootユーザー)
目次に戻る