257

クライアントから通信するために、Java クラスからポート #5955 を開きました。完了後にこのポートを閉じるにはどうすればよいですか? また、ポートが開いているか閉じているかを表示できるコマンドはどれですか?

4

14 に答える 14

74

プロセスを見つけるには、次を試してください。

sudo lsof -i :portNumber

PID を使用して現在ポートを使用しているプロセスを強制終了します

kill PID

次に、ポートが閉じているかどうかを確認します。そうでない場合は、次を試してください。

kill -9 PID

前の方法がうまくいかなかった場合にのみ、次のことを行います

sudo kill -9 PID

安全のために。繰り返しますが、ポートを開いた方法によっては、これは問題にならない場合があります。

于 2015-10-06T05:55:14.260 に答える
30

ただし、ポートを開いても、同じ方法で閉じます。たとえば、ソケットを作成し、それをポート 0.0.0.0:5955 にバインドし、listen を呼び出した場合は、同じソケットを閉じます。

ポートが開いているプロセスを強制終了することもできます。

ポートが開いているプロセスを知りたい場合は、次のようにしてください。

lsof -i :5955

ポートが開いているかどうかを知りたい場合は、同じ lsof コマンドを実行するか (開いているプロセスがある場合は開いています。そうでない場合は開いていません)、単に接続を試みることができます。

nc localhost 5955

出力なしですぐに戻る場合は、ポートが開いていません。

技術的に言えば、開いているのはポートではなく、ホストとポートの組み合わせであることに言及する価値があるかもしれません。たとえば、LAN に 10.0.1.2 として接続している場合、ソケットを 127.0.0.1:5955 または 10.0.1.2:5955 にバインドすることができます。一方が他方に影響を与えることはなく、0.0.0.0 にバインドすることもできます。 :5955 両方を一度に処理します。コマンドを使用して、コンピューターのすべての IPv4 および IPv6 アドレスを表示できますifconfig

于 2012-09-12T22:57:26.977 に答える
5

上記のように、とlsof組み合わせて使用​​します。killしかし、このプロセスを自動化する簡単な小さな bash スクリプトを作成しました。

このスクリプトを使用するとkillport 3000、どこからでも簡単に入力でき、 port で実行されているすべてのプロセスを強制終了します3000

https://github.com/xtrasimplicity/killport

于 2016-03-06T08:34:45.263 に答える
1

ポートを開いたプログラムが終了すると、ポートは自動的に閉じられます。このサーバーを実行している Java プロセスを強制終了すると、それが実行されます。

于 2012-09-28T06:03:48.227 に答える