「サーバーが立ち上がらない…」
「このポート、他のサービスが使ってる?」
そんなときに真っ先に確認したいのが「使用中のポート」の情報です。
Linux環境では、ターミナルコマンドを使って簡単にポートの使用状況を確認することが可能です。
この記事では、初心者にもわかりやすく、Linuxで現在使用中のポートを調べる複数の方法を解説します。Web開発やサーバー管理、トラブルシュート時にきっと役立ちます!
方法①:ssコマンドで確認する

ss
(socket statistics)は netstat
よりも高速で、最新のLinuxディストリビューションでは推奨されているコマンドです。
sudo ss -tuln
オプションの意味:
オプション | 内容 |
---|---|
-t | TCP接続のみ表示 |
-u | UDP接続のみ表示 |
-l | リッスン中のポートのみ表示(待ち受け) |
-n | ホスト名・サービス名を数値で表示 |
出力例:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:3306 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
この例では、ポート80(HTTP)、3306(MySQL)、22(SSH)が使用中であることがわかります。
使いやすいvsメモリ効率
# 見やすく整形した出力(プロセス情報も表示)
sudo ss -tulnp
# さらに詳細な統計情報を表示
sudo ss -tuln --info
方法②:netstat コマンドで確認(古いけどまだ使われる)
sudo netstat -tuln
netstat
は古くからあるツールですが、ss
に比べて非推奨のディストリビューションもあります。
ただし、まだ多くのサーバーで利用可能です。
出力例:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
プロセス情報も表示するには:
sudo netstat -tulnp
これにより、各ポートを使用しているプロセス名とPIDも表示されます。
方法③:特定ポートを使っているプロセスを調べる lsof

lsof
は「List Open Files」の略で、ポートとプロセスを直接関連付けて確認できる便利なコマンドです。
例:ポート3000が使われているか確認
sudo lsof -i :3000
出力例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 1234 user 20u IPv6 123456 0t0 TCP *:3000 (LISTEN)
この場合、プロセスID 1234 の node
がポート3000を使用中であることがわかります。
全ポートの確認:
sudo lsof -i -P
-P
オプションは、ポート番号をサービス名に変換せずにそのまま表示します。
リスニング状態(待ち受け)のポートのみ表示:
sudo lsof -i -P | grep LISTEN
方法④:プロセスID(PID)から確認する
ポートを使っているプロセスのID(PID)がわかったら、以下のようにして詳細を確認できます。
ps -p 1234 -o pid,comm,user
または、
top -p 1234
で動作中の様子をリアルタイムで確認できます。
プロセスの詳細情報:
# さらに詳しい情報を表示
ps -fp 1234
# メモリ使用量なども確認
ps -p 1234 -o pid,comm,user,%cpu,%mem,start
各コマンドの違いと使い分け
コマンド | 特徴 | おすすめの用途 |
---|---|---|
ss | 高速で最新、詳細な情報表示可能 | 全体的なポート状況確認に最適 |
netstat | 古いが広く使われている | レガシーシステムでの確認に |
lsof | ファイルとポートの関連付けが得意 | 特定ポートのプロセス特定に便利 |
ポートの競合でトラブルが発生したときの対処法
プロセスを強制終了する(慎重に)
sudo kill -9 1234
ただし、本当に不要なプロセスか確認してから行いましょう。重要なシステムプロセスを止めてしまうと、サーバーに影響が出る可能性があります。
より安全な終了方法:
# まずは通常の終了シグナル
sudo kill 1234
# それでも終了しなければ強制終了
sudo kill -9 1234
プロセス名から終了する方法:
sudo pkill -f node
これは「node」という名前のすべてのプロセスを終了させます。慎重に使用してください。
実践例:よくあるトラブルシューティング

例1:Webサーバーがポート80で起動できない
# ポート80の使用状況を確認
sudo lsof -i :80
# 結果に基づいて対処(例:Apacheが使っていた場合)
sudo systemctl stop apache2
# または
sudo service apache2 stop
例2:自分のNode.jsアプリが3000番ポートで起動できない
# ポート3000の使用状況確認
sudo ss -tulnp | grep 3000
# 結果に基づいて対処
# a) プロセスを終了
sudo kill <PID>
# b) 別のポートを使用
# アプリの設定やコマンドラインオプションでポート番号を変更
セキュリティの観点から
使用中のポートは、サーバーの「開いている窓」のようなものです。不要なポートが開いていると、攻撃者に侵入口を提供してしまう可能性があります。
# インターネットに公開されている可能性のあるポートを確認
sudo ss -tuln | grep '0.0.0.0'
定期的に使用中のポートを確認し、必要のないサービスは停止することをお勧めします。
まとめ
Linuxでポートの使用状況を確認できるようになると、アプリケーションの競合トラブルをすぐに把握・対処できるようになります。
本記事のおさらい:
ss -tuln
:もっとも推奨される確認方法lsof -i :ポート番号
:プロセスとポートの対応をチェックkill
コマンドでプロセスの停止も可能(慎重に)- 各コマンドを状況に応じて使い分ける
実践的なコマンド集
# よく使われるポートの状態チェック
sudo ss -tuln | grep -E ':(22|80|443|3306|5432|6379|27017)'
# 特定のアプリケーションが使っているポートを確認
sudo lsof -i -P | grep -i node
# 待ち受け中ポートとプロセスの一覧取得
sudo ss -tulnp
コメント