複数のコンピュータでこの問題が発生しました。ブロックされたポートを解放する方法はありますか?例は次のとおりです。
説明します。一部のポートが開いているSUSE Linux Enterprise Server 11 SP4で一部のJAVAプロセスを終了しました。 rootユーザーに "kill -9"コマンドを使用しました。ポートはまだブロックされているため、プロセスを再開できません。ポートが開いている間、アプリケーションは終了します。しかし、そのプロセスは間違いなく消えました!
コマンドを使用して(rootユーザーも使用して)表示すると、
netstat -anop | grep -E "Sta|37941"
次のような結果が得られます。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer
[...]
tcp 0 0 172.21.63.27:42034 172.21.63.28:37941 ESTABLISHED - keepalive (2861.75/0/0)
[...]
PIDは表示されません!プロセスを終了する前にプロセスのPIDを表示します。これらの「死んだ」ポートを解放する方法はありますか?アプリケーションを再起動するには、常にオペレーティングシステムを再起動する必要があります。ただし、これは高可用性システムにとって非常に重要です。それでは、後でプロセスを終了する必要がある場合はどうなりますか?この問題は、過去に他のUNIXオペレーティングシステムでも発生しました。
今後この問題の解決にご協力いただきありがとうございます。あらかじめ皆さんありがとうございます!
答え1
どのプロセス(PIDを含む)がポートを使用しているかを確認してください。
netstat -tupln |grep ":<Your_Port_Here>"
次に、PID(近くのプロセス名)を正常に終了します。パラメーターで kill コマンドを使用しないでください。
kill <pid>
注:一度も試したことがない場合は、反対投票をしないでください!