指定された複数のポートを外部ファイルに記載して、それに基づいてそれぞれのポートを使用しているプロセスを確認する場合、以下の手順を用います。
ステップ1: 外部ファイルにポート番号を記載
例えば、ports.txt という名前のファイルに以下のようにポート番号を記載します。
ports.txt
8080
3306
5432
ステップ2: シェルスクリプトでプロセスを取得
以下は、lsof または netstat コマンドを使って、ファイル内のポートごとにプロセス情報を取得するスクリプト例です。
lsof を使用した例
script.sh
#!/bin/bash
# ポート番号が記載されたファイル
PORT_FILE="ports.txt"
# ファイルを1行ずつ読み取る
while IFS= read -r port; do
echo "=== Port $port ==="
lsof -i :"$port" 2>/dev/null || echo "No process found for port $port"
echo ""
done < "$PORT_FILE"
ステップ3: スクリプトの実行
スクリプトに実行権限を付与して実行します。
chmod +x check_ports.sh
./check_ports.sh
スクリプトの結果例
例えば、ports.txt に 8080 が記載されていて、そのポートでプロセスが動作している場合、以下のような出力が得られます。
=== Port 8080 ===
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1234 user 10u IPv4 12345 0t0 TCP *:8080 (LISTEN)
プロセスが見つからない場合:
=== Port 5432 ===
No process found for port 5432