【Linux】ssコマンドの使い方|特定ポートの使用状況を確認する

【Linux】ssコマンドの使い方|特定ポートの使用状況を確認する

当ページのリンクには広告が含まれています。

記事の文字数:2664

ssコマンドはnetstatの代替として推奨されているコマンドで、LISTENポートなどネットワークのソケット情報を表示するコマンドです。本記事ではLinuxでのネットワーク調査やトラブルシューティングに欠かせない「ss」コマンドの使い方を、初心者にもわかりやすく徹底解説します。


スポンサーリンク

Linux環境でネットワークの状態を調査する際に欠かせないのが、ssコマンドです。本記事では、ssコマンドの基本的な使い方から、実践的な活用方法までをわかりやすく解説します。また、従来のツールとの違いや、より効率的に活用するためのテクニックについても紹介します。

ssはnetstatの代替コマンド

ssコマンドはsocket statisticsの略で、ネットワークのソケットの情報を表示するために使用されるLinuxコマンドです。従来のnetstatコマンドの代替として推奨されていて、より簡単に情報を取得することができます。ネットワーク接続、リスニングソケット、パケット統計などの情報を取得することができます。
ネットワーク接続の状態を調査する際には、まさに必須のツールと言えるでしょう。

ssとnetstatの違い

比較項目netstatss
パフォーマンス低速高速
保守状況非推奨推奨
表示対象制限あり詳細まで対応

ssコマンドはLinuxカーネルが持つ情報を直接読み出すため、非常に高速かつ正確な出力が可能です。 netstatは古くからあるツールですが、内部的には/procファイルシステムを通して情報を取得しており、ssほど効率的ではありません。現在では多くのディストリビューションでssがデフォルトのツールとして推奨されており、将来的なメンテナンス性を考慮してもssへの移行が望まれます。

netstatコマンドを利用した確認をしたい場合はこちらのリンクを参照してください。

基本的な使い方

ssコマンドにオプションを指定することで利用することができます。

コマンド構文
ss [オプション]

何もオプションを指定せずに実行すると、現在のすべてのTCP接続が表示されます。

実行例
ss

この出力には、ローカルアドレス、リモートアドレス、接続状態(ESTAB、LISTENなど)、関連するプロセス情報が含まれます。例えば、ウェブサーバやデータベースサーバの接続数を確認したい場合に便利です。

各出力項目の説明

各出力項目の意味は以下の通りとなります。

項目説明
Netid使用しているソケットタイプ(例: tcp, udp, unix など)
State接続状態(LISTEN, ESTAB, CLOSE-WAIT など)
Recv-Q受信キューのバイト数(未処理データ)
Send-Q送信キューのバイト数(送信待ちデータ)
Local Address:Portローカルアドレスとポート番号(サーバ側)
Peer Address:Port接続相手のアドレスとポート番号(クライアント側)
Process関連するプロセス情報(-p オプション指定時。PIDやコマンド名など)

よく使うオプション一覧

よく利用するssコマンドの各オプションを以下に示します。これらのオプションを組み合わせることで、さまざまな角度からネットワーク状態を分析することが可能です。

オプション説明
-tTCPソケットのみを表示,TCP情報を表示
-uUDPソケットのみを表示,UDP情報を表示
-lLISTEN状態のソケットのみ表示,Listenポートのみを表示
-aすべてのソケットを表示(LISTEN含む)
-nホスト名やサービス名を解決せずに数値で表示
(ex :httpと表示せず:80と表示)
-p該当ソケットに紐づくプロセス情報を表示(要sudo)
-sソケットの統計情報を表示
-xUNIXドメインソケットを表示

すべてのソケットを表示

以下コマンドですべてのソケット情報を取得します。

実行コマンド
ss -a

LISTEN状態のTCPポートを確認

以下コマンドで接続待ちしているソケットを取得します。

実行コマンド
ss -nlt

サーバとして動作しているプロセスがどのポートで待ち受けているかを確認できます。

LISTEN状態のUDPポートを確認

Terminal window
ss -uln

DNSサーバやNTPサーバのように、UDPで待ち受けているサービスの確認に有効です。

通信が確立しているポートを確認

以下コマンドを実行して通信が確立しているTCPソケットを取得します。

実行コマンド
ss -nt
実行結果例
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:80
ESTAB 0 88 xx.xxx.x.x:xxxx xxx.xxx.xx.xx:xxxxx
ESTAB 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:80

以下コマンドを実行して通信が確立しているUDPソケットを取得します。

実行コマンド
ss -nu

プロセス情報付きでポート番号を表示

特定の接続がどのプロセスに属しているかを確認したいときに便利です。特にポート競合のトラブルシューティングに役立ちます。 以下コマンドでTCP、UDP両方の接続を、ホスト名解決なし、プロセス情報付きで一覧表示します。

Terminal window
sudo ss -tunap

UNIXドメインソケットの一覧表示

nginxやPostgreSQLなど、ローカル通信にUNIXソケットを利用するソフトウェアの接続状況を確認できます。

Terminal window
ss -x

ソケットの統計情報を表示

以下コマンドでソケットの種類ごとに本数をサマリ表示します。

実行コマンド
ss -s
実行結果例
Total: 125
TCP: 15 (estab 3, closed 0, orphaned 0, timewait 0)
Transport Total IP IPv6
RAW 0 0 0
UDP 8 6 2
TCP 15 12 3
INET 23 18 5
FRAG 0 0 0

フィルタ機能を使いこなす

ssコマンドでは、詳細なフィルタ指定が可能です。以下のような高度な条件指定に対応しています。

特定のポートで待ち受けているサービスを探す

実行コマンド例
ss -ltn sport = :80

HTTPサービスなど、特定のポートでLISTENしているTCPソケットを探します。

実行結果例
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 511 [::]:80 [::]:*

特定のIPアドレスへの接続を確認

あるホストへの接続状態をチェックしたい場合に使用します。ファイアウォールのトラブルシュートにも有効です。

実行コマンド例
ss -tn dst 192.168.0.1

複数条件の組み合わせ

特定ネットワーク内からHTTPSポートへ接続している通信だけを抽出できます。

Terminal window
ss -tan 'src 192.168.0.0/24 and dst = :443'

まとめ

ssコマンドは、軽量で高速、かつ柔軟なフィルタ機能を持つ優れたネットワーク調査ツールです。TCP/UDPの通信状態の確認から、特定ポートやプロセスに関する調査、さらにUNIXソケットの確認まで幅広く対応しています。特にリアルタイム性が求められるトラブルシューティングや監視用途において、その価値は非常に高いものです。

基本の使い方をマスターすることで、ネットワークトラブルの原因調査やサーバのポート確認がスムーズになります。netstatからの移行がまだの方は、ぜひこの機会にssに慣れておきましょう。さらにスクリプトや監視ツールと組み合わせることで、自動化されたネットワーク監視体制の一部としても活用できます。

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

新品価格
¥2,970 から
(2025/5/24 10:23時点)

ゼロからわかる
Linuxコマンド200本ノック?
基礎知識と頻出コマンドを
無理なく記憶に焼きつけよう!

新品価格
¥2,587 から
(2025/4/22 20:54時点)

エンジニア1年生のための
世界一わかりやすい
Linuxコマンドの教科書

新品価格
¥2,475 から
(2025/4/22 21:13時点)


以上で本記事の解説を終わります。
よいITライフを!
Scroll to Top