不正なアプリケーションによって開かれたままになっているポートを閉じる方法(バインドを解除する方法)


19

私はFedora 13 64ビットを使用しています。私のEclipseプログラムはポート9050でサーバーを起動しますが、プログラムをシャットダウンすると、Eclipseはサーバーを適切にシャットダウンできません。Eclipseを再起動しても効果はありません。

コマンドラインからポートを強制的に閉じたりアンバインドしたりするにはどうすればよいですか?

再起動するか、ログオフして再度ログオンするとポートがクリアされることはわかっていますが、この処理はずっと遅くなります。コマンドラインでポートを強制的に閉じることを探しています。

回答:


10

リスニングポートを強制的に閉じる唯一の方法は、そのポートでリッスンしているプロセスを強制終了することです。使用はlsofnetstatfuser- rootとして-プロセスIDを確認します。プロセスが終了すると(それ自体または終了することにより)、カーネルは開いていたすべてのソケットを自動的にクリーンアップします。(ただし、プログラムが同じポートで数分間リッスンすることを拒否される場合があります。この場合、できるのは待つだけです。)


19
lsof -n -i

探しているプロセスを見つけて強制終了します。

lsofマニュアルから:

-nこのオプションは、ネットワーク番号のネットワークファイルのホスト名への変換を禁止します。変換を禁止すると、lsofの実行が速くなる場合があります。また、ホスト名の検索が適切に機能しない場合にも役立ちます。

-i [i]このオプションは、インターネットアドレスがiで指定されたアドレスと一致するファイルのリストを選択します。アドレスが指定されていない場合、このオプションはすべてのインターネットおよびx.25(HP-UX)ネットワークファイルのリストを選択します。

この質問に対する同じ答えは私が思う。


7
| grep ":9050"出力(または任意のポート番号)をスローして、出力を簡単にフィルタリングします
isaacparrot 14年

9

スイッチでfuserコマンドを使用できます-k

たとえば、ポート111を閉じるには、次の操作を実行できますfuser -k 111/tcp (これにより、プロセスのIDを見つけて、フューザーが暗黙的に行うようにプロセスを強制終了する手間も省けます)。

一部のプロセスは、閉じられると自動的に再起動することに注意してください。そのためには、適切な回避策を考え出すために、各プロセスの設定ファイルを確認する必要があります。


-3

私は同じ問題を抱えていましたが、Windowsでcmdコマンドを使用してそのポートをリッスンしているプロセスを探してください

netstat -a -b

その後、タスクマネージャでシャットダウンできます


2
すみません、私は投票しました。あなたは「Windows」と言います。netstatの「-b」パラメーターは、実行可能ファイル名を表示し、Microsoft Windowsに固有のものです。(Unix netstatのバリエーションは同様の機能を持っている可能性がありますが、通常は同じパラメーターを使用していません。)ただし、質問は「Fedora」でした。 netstatのFedoraのマニュアルページには、使用-pするとPID(実行可能ファイルの名前を識別するために使用できる)が表示されることが示されています。
TOOGAM

1
この答えにはいくつかの間違いがあります。答えには、回避できる可能性のある文法的な誤りが含まれています。答えは、質問の最初の文で明らかに言及されているFedoraにも当てはまりません。この回答が30分前に送信されたときに質問にこの情報が含まれていなかったというわけではありません。質問は5年近く前の2011年7月から編集されていません。だから、私はこの答えを「私も」と答えていますが、これは実際にはほとんど役に立たないのです。
ラムハウンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.