使われてるポートを調べる・削除する

使われてるポートを調べる

localhost8000から8100までのポートを調べるには以下のように実行します。

# nc -zv <host> <start>-<end>
nc -zv localhost 8000-8100

<start>-<end>には範囲を指定し3000から4000までの範囲を調べたいなら、3000-4000のようにします。

実行すると、範囲内のポートがどうだったかログが出力され、そのポートが閉じてる場合は、

nc: connectx to localhost port 8080 (tcp) failed: Connection refused

のように出力され開いてた場合は、

found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
        outif lo0
        src ::1 port 53010
        dst ::1 port 8080
        rank info not available
        TCP aux info available

Connection to localhost port 8080 [tcp/http-alt] succeeded!

のように出力されます。

またすべてがfailedの場合、このコマンドの終了ステータスは1になり、1つでもsucceededの場合は0になります。

ポートのプロセスを終了する

上記では8080番がsucceededとなりました。そのポートの内容を終了させたい場合、まずポートを使ってるプロセスの PID を以下のように調べます。

# lsof -i:<port>
lsof -i:8080
# COMMAND     PID  USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
# com.docke 96307 nju33   43u  IPv6 0x5e43f653a65638b      0t0  TCP *:http-alt (LISTEN)

この結果のPIDの列の番号が終了させるのに必要な番号です。後はその番号をkillコマンド実行時に渡します。

kill -9 96307

Bash などの場合は、これは一行で行えます。

kill -9 $(lsof -t -i:8080)

-tにより プロセスID だけを取得できるので上のコマンドは以下と同じになります。

kill -9 96307