【エスエス】

ss(ソケット状態確認) とは?

💡 ネットワーク接続の「今」を素早く見るコマンド
📌 このページのポイント
ss — ソケットの状態を高速表示 $ ss -tulnp TCP/UDP の LISTEN ソケットをプロセス付きで表示 State Local Addr:Port Peer Addr:Port Process LISTEN 0.0.0.0:80 *:* nginx LISTEN 0.0.0.0:443 *:* nginx ESTAB 10.0.0.5:443 203.0.113.1:52341 nginx TIME-WAIT -t TCP -u UDP -l LISTEN -n 数値表示 -p プロセス表示 netstat → ss。カーネルから直接ソケット情報を取得し高速表示 netstat の後継。カーネルから直接取得するため高速
ss コマンドのソケット状態表示のイメージ
ひよこ ひよこ

自分のサーバーでどのポートが開いてるか確認したいんだけど?

ペンギン先生 ペンギン先生

ss -tlnp と打ってみよう。t はTCP、l はリスニング中、n は数値表示、p はプロセス名。これで「どのポートで何のサービスが待ち受けているか」が一目で分かるよ。

ひよこ ひよこ

netstatとどう違うの?

ペンギン先生 ペンギン先生

ssはnetstatの後継で、Linuxカーネルから直接情報を取得するから圧倒的に速いんだ。接続数が何万もあるサーバーだとnetstatは数十秒かかることもあるけど、ssなら一瞬だよ。最近のディストリビューションではnetstatが入っていないこともあるしね。

ひよこ ひよこ

接続がたくさんあるときに絞り込む方法は?

ペンギン先生 ペンギン先生

ss -tn state established でESTABLISHED状態の接続だけ表示したり、ss -tn dst :443 で443番ポートへの接続だけフィルタリングしたりできるよ。フィルタ構文が強力なのもssの魅力だね。

ひよこ ひよこ

トラブル対応でどう使うの?

ペンギン先生 ペンギン先生

たとえば「Webサーバーにつながらない」と言われたら、まずss -tlnpで80/443番ポートがリスニングしているか確認する。次にss -tn state time-waitでTIME_WAIT状態の接続が大量にないかチェック。大量のTIME_WAITはコネクション枯渇の兆候だから、カーネルパラメータのチューニングが必要になるケースもあるんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ss」って出てきたら「ネットワーク接続の状態を確認するコマンド」と思えればだいたいOK!
📖 おまけ:英語の意味
「socket statistics」 = ソケット統計
💬 ネットワークソケットの統計情報を表示するコマンドだよ
← 用語集にもどる