netstat -tulnap
は、使用中のポートを示します。 Linuxでポートを解放する方法は?
他の人が言ったように、そのポートでリッスンしているすべてのプロセスを強制終了する必要があります。これを行う最も簡単な方法は、fuser(1)コマンドを使用することです。たとえば、ポート80でhttp要求をリッスンするすべてのプロセスを表示するには(rootとして実行するか、Sudoを使用します):
# fuser 80/tcp
それらを殺したい場合は、単に-kオプションを追加してください。
Linuxで特定のポートを削除するには、以下のコマンドを使用します
Sudo fuser -k Port_Number/tcp
port_Numberを使用中のポートに置き換えます。
tcpkill
(dsniff
パッケージの一部)を使用して、必要なポート上の接続を強制終了できます。
Sudo tcpkill -9 port PORT_NUMBER
"netstat --programs"
コマンドは、ルートであると仮定してプロセス情報を提供します。それから、あなたをいらいらさせるために再び立ち上がるかもしれない「問題のある」プロセスを殺さなければなりません:-)。
ここで実際に何を達成しようとしていますか?ソリューションは、これらのポートを保持しているプロセスによって異なります。
問題のポートをリッスンしているプロセスを強制終了します。 netstatがプロセスIDを示していると思います。
ターミナルタイプで:
netstat -anp|grep "port_number"
ポートの詳細が表示されます。最後の列に移動します。この形式になります。例:-PID/Java
次に実行します:
kill -9 PID. Worked on Centos5
Mac用:
lsof -n -i :'port-number' | grep LISTEN
サンプル応答:
Java 4744 (PID) test 364u IP0 asdasdasda 0t0 TCP *:port-number (LISTEN)
次に実行します:
kill -9 PID
Macbookで働いた
プロセスをすぐに強制終了したい場合は、TERMシグナルの代わりにKILLシグナルを送信します(後者のシグナルは停止要求で、最初のシグナルはクリーンアップなしですぐに有効になります)。簡単です:
kill -KILL <pid>
ただし、停止しているプログラムによっては、停止すると状態がひどく破損する可能性があることに注意してください。通常、正常終了が機能しない場合にのみ、KILLシグナルを送信します。根本的な問題は何を解決しようとしているのか、そして殺害が正しい解決策であるかどうかだと思います。
唯一の方法は、ポートを開いたプロセスを停止することだと思います。
すべてのポートを確認するには:
netstat -lnp
開いているポートを閉じるには:
fuser -k port_no/tcp
例:
fuser -k 8080/tcp
どちらの場合も、必要に応じてSudo
コマンドを使用できます。