LinuxでWebアプリやテスト用のサーバーを立てるときによく使うのが「8080ポート」です。
Tomcat、Node.js、Django開発サーバー、Jenkins、Docker コンテナなど、多くのツールがデフォルトで8080ポートを使います。しかし、以下のような問題に遭遇することがあります。
- 「アプリが起動したはずなのに、本当に8080番で待ち受けしてる?」
- 「8080ポートがすでに使用中エラーが出る。どのプロセスが使ってる?」
- 「外部からアクセスできない。ポートは開いているの?」
- 「複数のサービスが同じポートを使おうとして競合している」
- 「開発環境でポート番号を変更すべきか判断したい」
この記事では、Linuxで8080ポートの使用状況を確認する方法を、初心者から上級者まで理解できるよう詳しく解説します。
ss
、netstat
、lsof
という3つの主要ツールを使って、ポートの状況やプロセスを調べる手順を具体例とともに紹介します。
ポート確認が必要な場面

よくあるシナリオ
開発環境でのトラブル
- Node.jsアプリの起動時に「EADDRINUSE: port 8080 already in use」エラー
- Docker Composeで複数コンテナが同じポートを使用
- 開発サーバーが立ち上がらない
本番環境での確認
- Webアプリケーションが正常に起動しているか確認
- ロードバランサーからの接続ができているか
- セキュリティ監査でのポート使用状況調査
トラブルシューティング
- サービスの応答がない場合の原因調査
- ファイアウォール設定前の動作確認
- 予期しないプロセスによるポート占有の調査
ssコマンドで8080ポートを確認する
ssコマンドの特徴
ss
(socket statistics)はnetstat
の後継ツールで、以下の特徴があります。
- 高速:大量のコネクションでも素早く表示
- 標準装備:多くの最新Linuxディストリビューションで標準インストール
- 豊富な機能:詳細なフィルタリングが可能
基本的な使い方
8080ポートをリッスンしているプロセスを確認
ss -ltn sport = :8080
オプションの説明
-l
:LISTEN(待ち受け)しているソケットのみ表示-t
:TCPプロトコルのみ表示-n
:ポート番号を数値で表示(名前解決しない)sport = :8080
:サーバー側ポート8080を対象にする
出力例
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 50 [::]:8080 [::]:*
プロセス情報も含めて確認
ss -ltnp sport = :8080
-p
オプション追加でプロセス情報も表示されます。
出力例
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 50 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=1234,fd=8))
より詳細な情報を取得
# 8080ポートに関連するすべての接続
ss -atn sport = :8080 or dport = :8080
# プロセス名も含めて grep で絞り込み
ss -ltnp | grep ':8080'
# より読みやすい形式で表示
ss -ltnp sport = :8080 | column -t
IPv4とIPv6の区別
# IPv4のみ
ss -4 -ltn sport = :8080
# IPv6のみ
ss -6 -ltn sport = :8080
netstatコマンドで8080ポートを確認する
netstatコマンドの特徴
netstat
は伝統的なネットワーク状態表示ツールで、以下の特徴があります。
- 実績豊富:長年使われており、多くの文献で参照される
- 幅広い情報:ルーティングテーブルやインターフェース統計も表示可能
- 互換性:古いシステムでも利用可能
インストール方法
多くの新しいLinuxディストリビューションではnetstat
がデフォルトで入っていません。
Ubuntu/Debian系
sudo apt update
sudo apt install net-tools
CentOS/RHEL/Fedora系
# CentOS 7/RHEL 7
sudo yum install net-tools
# CentOS 8以降/Fedora
sudo dnf install net-tools
Arch Linux
sudo pacman -S net-tools
基本的な使い方
8080ポートの確認
netstat -ltnp | grep ':8080'
オプションの説明
-l
:LISTENしているポートのみ表示-t
:TCPプロトコルのみ表示-n
:数値で表示(名前解決しない)-p
:プロセスID(PID)とプロセス名を表示
出力例
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1234/java
tcp6 0 0 :::8080 :::* LISTEN 1234/java
より詳細な情報の取得
すべてのポート状態を表示
# すべての接続(LISTEN + ESTABLISHED)
netstat -atn | grep ':8080'
# UDPポートも含めて確認
netstat -tulnp | grep ':8080'
統計情報の表示
# ネットワーク統計
netstat -s
# TCPの統計のみ
netstat -st
ルーティングテーブルも確認
# ルーティング情報(ポート疎通問題の調査に有用)
netstat -rn
lsofコマンドで8080ポートを確認する

lsofコマンドの特徴
lsof
(list open files)は、開かれているファイル(ネットワークソケット含む)を表示するツールです。
- プロセス中心:どのプロセスがどのリソースを使用しているかが分かりやすい
- 詳細情報:ファイルディスクリプタや接続状態の詳細を表示
- 柔軟な絞り込み:様々な条件でフィルタリング可能
基本的な使い方
8080ポートを使用しているプロセスを表示
lsof -i :8080
出力例
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1234 root 8u IPv6 123456 0t0 TCP *:http-alt (LISTEN)
出力項目の説明
- COMMAND:プロセス名
- PID:プロセスID
- USER:実行ユーザー
- FD:ファイルディスクリプタ(8u = 8番、読み書き可能)
- TYPE:ソケットタイプ
- DEVICE:デバイス番号
- SIZE/OFF:ファイルサイズまたはオフセット
- NODE:inode番号
- NAME:接続情報
より詳細な確認
TCPポートのみに絞り込み
lsof -iTCP:8080
特定のプロトコルバージョン
# IPv4のみ
lsof -i4TCP:8080
# IPv6のみ
lsof -i6TCP:8080
LISTEN状態のみ表示
lsof -iTCP:8080 -sTCP:LISTEN
特定ユーザーのプロセスのみ
lsof -i :8080 -u tomcat
プロセス詳細の確認
プロセスツリーを表示
# 見つかったPIDの親子関係を確認
lsof -i :8080 | awk 'NR>1 {print $2}' | xargs pstree -p
プロセスの詳細情報
# プロセス詳細(例:PID 1234の場合)
ps aux | grep 1234
cat /proc/1234/cmdline | tr '\0' ' '
実用的な使用例とトラブルシューティング
よくある確認パターン
開発環境での確認
# 開発サーバーが起動しているか確認
ss -ltnp sport = :8080
# 起動していない場合の原因調査
lsof -i :8080 # 他のプロセスが使用していないか
# プロセス強制終了(必要に応じて)
sudo kill -9 $(lsof -t -i :8080)
本番環境での監視
# サービス状態の確認
systemctl status your-service
ss -ltnp sport = :8080
# 接続数の確認
ss -ant sport = :8080 | wc -l
# 接続元IPの分析
ss -ant sport = :8080 | awk '{print $4}' | cut -d: -f1 | sort | uniq -c
ポート衝突の解決
他のプロセスがポートを使用している場合
# 使用プロセスの特定
lsof -i :8080
# プロセスの詳細確認
ps aux | grep [PID]
# 必要に応じてプロセス停止
sudo systemctl stop [service-name]
# または
sudo kill [PID]
代替ポートの確認
# 8081-8090の範囲で空いているポートを確認
for port in {8081..8090}; do
if ! ss -ltn sport = :$port | grep -q LISTEN; then
echo "Port $port is available"
fi
done
パフォーマンス確認
接続数の監視
# 現在の接続数
ss -ant sport = :8080 | grep ESTAB | wc -l
# 継続的な監視(1秒間隔)
watch -n 1 "ss -ant sport = :8080 | grep ESTAB | wc -l"
リソース使用量の確認
# CPU・メモリ使用量
PID=$(lsof -t -i :8080)
top -p $PID
# ファイルディスクリプタ使用数
lsof -p $PID | wc -l
外部からのアクセス確認

ファイアウォール設定の確認
iptablesでの確認
# 8080ポートの受信ルール確認
sudo iptables -L -n | grep 8080
# 詳細なルール表示
sudo iptables -L INPUT -n --line-numbers | grep 8080
UFW(Ubuntu Firewall)での確認
# UFW状態確認
sudo ufw status
# 8080ポートの状態確認
sudo ufw status | grep 8080
firewalld(CentOS/RHEL)での確認
# ファイアウォール状態
sudo firewall-cmd --state
# 8080ポートの確認
sudo firewall-cmd --list-ports | grep 8080
接続テスト
ローカルからのテスト
# 基本的な接続テスト
telnet localhost 8080
# curlでHTTPテスト
curl -I http://localhost:8080
# ncでの接続テスト
nc -zv localhost 8080
外部からのテスト
# 外部IPからの接続テスト
curl -I http://[server-ip]:8080
# nmapでのポートスキャン
nmap -p 8080 [server-ip]
セキュリティ面での注意点
リスニングアドレスの確認
セキュリティリスク
# 危険:すべてのインターフェースで待ち受け
0.0.0.0:8080
# 安全:ローカルホストのみ
127.0.0.1:8080
設定の確認と変更
# 現在のリスニング状態確認
ss -ltn sport = :8080
# アプリケーション設定でバインドアドレスを変更
# 例:Node.jsの場合
# app.listen(8080, '127.0.0.1') // ローカルのみ
# app.listen(8080, '0.0.0.0') // すべてのIF
プロセス権限の確認
# プロセス実行ユーザーの確認
lsof -i :8080 | awk 'NR>1 {print $3}'
# rootで動作している場合は要注意
ps aux | grep $(lsof -t -i :8080)
継続的な監視とスクリプト化

簡単な監視スクリプト
#!/bin/bash
# port_monitor.sh
PORT=8080
LOG_FILE="/var/log/port_monitor.log"
check_port() {
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
local process_info=$(lsof -i :$PORT 2>/dev/null)
if [ -n "$process_info" ]; then
echo "[$timestamp] Port $PORT is in use:" >> $LOG_FILE
echo "$process_info" >> $LOG_FILE
else
echo "[$timestamp] Port $PORT is available" >> $LOG_FILE
fi
}
check_port
cron での定期実行
# crontabに追加(5分間隔でチェック)
*/5 * * * * /path/to/port_monitor.sh
アラート機能付きスクリプト
#!/bin/bash
# port_alert.sh
PORT=8080
EXPECTED_PROCESS="java"
current_process=$(lsof -i :$PORT -Fn | grep "^n" | cut -c2-)
if [ -z "$current_process" ]; then
echo "ALERT: Port $PORT is not in use!"
# メール送信やSlack通知などの処理
elif [[ "$current_process" != *"$EXPECTED_PROCESS"* ]]; then
echo "ALERT: Unexpected process using port $PORT: $current_process"
fi
よくある質問と回答

Q: 複数のプロセスが同じポートを使えるの?
A: 基本的には不可能ですが、いくつかの例外があります。
通常の場合
- 同じIPアドレス・ポート番号の組み合わせは1つのプロセスのみ
- SO_REUSEPORTオプションを使用した場合は複数プロセス可能(Linux 3.9以降)
確認方法
# 同じポートを使用している全プロセス
lsof -i :8080 | awk 'NR>1 {print $1, $2}' | sort | uniq
Q: ポートは開いているのに接続できない
A: 以下の原因が考えられます。
確認手順
- プロセスが実際に動作しているか
lsof -i :8080 ps aux | grep [PID]
- ファイアウォール設定
sudo iptables -L -n | grep 8080 sudo ufw status | grep 8080
- リスニングアドレス
# 127.0.0.1のみなら外部から接続不可 ss -ltn sport = :8080
- ネットワーク接続
ping [server-ip] traceroute [server-ip]
Q: コマンドが見つからないエラーが出る
A: 必要なパッケージをインストールしてください。
Ubuntu/Debian
# netstat
sudo apt install net-tools
# lsof
sudo apt install lsof
# ss(通常は標準インストール済み)
sudo apt install iproute2
CentOS/RHEL
# netstat
sudo yum install net-tools # CentOS 7
sudo dnf install net-tools # CentOS 8以降
# lsof
sudo yum install lsof
sudo dnf install lsof
まとめ:効率的なポート確認を身につけよう
Linuxで8080ポートの使用状況を確認する方法をまとめると:
コマンド別の使い分け
ss
:高速で最新、推奨ツールnetstat
:伝統的で詳細、古いシステムとの互換性lsof
:プロセス中心の詳細情報
基本的なコマンド
# 最も汎用的な確認方法
ss -ltnp | grep ':8080'
netstat -ltnp | grep ':8080'
lsof -i :8080
トラブルシューティングの流れ
- ポートの使用状況確認:
ss
またはnetstat
- プロセス詳細確認:
lsof
とps
- ファイアウォール確認:
iptables
やufw
- 接続テスト:
curl
やtelnet
実践的なポイント
- 開発環境では定期的なポート確認を習慣化
- 本番環境では監視スクリプトで自動化
- セキュリティ面でリスニングアドレスに注意
- トラブル時は体系的にチェック
コメント