ポート8080で実行されているプロセスを強制終了し、リモートデバッグのために利用しようとしました。
ソースコードがホストマシンにあり、コンパイルされたjarが別のUbuntuサーバーにある場合。したがって、ポート8080でリモートデバッグを実行しようとしていたので、リモートデバッグを続行するためにIntelliJ
構成の必要なパラメーターを変更し、そのようにサーバーマシンからjarを実行しようとしました。
Java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8080 hdfstohive-1.0-SNAPSHOT-jar-with-dependencies.jar
サーバーマシンで実行中のプロセスを強制終了したため、nmap serverip
およびnetstat -atun
を実行したときにポートが開いているのを見ることができなくなりました。
それで、ファイアウォール(Sudo ufw allow 8080/tcp
)ルールとiptable(Sudo iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 8080 -j ACCEPT
)ルールに追加しようとしましたが、まだポートが開いているのを見ることができません。ファイアウォールも無効にしようとしましたが、それでも運はありません。
したがって、必要なのは、そのポートを開いて、ホストマシンからリモートデバッグを実行できるようにすることです。私はすでにやったことで重要な何かを見逃していると確信しています。
私は没落に向かっていますか?任意の助けをいただければ幸いです。
Ubuntuでは、ファイアウォールまたはそれをブロックしているアプリケーションがない限り、すべてのポートが開かれます。通常の状況では、ポートで実行されているアプリケーションはリスニング用です。ポートから受信できるように。
ポートのBlockingまたはClosingは、ファイアウォールブロックへの参照を使用しています。
したがって、ファイアウォールでポートをブロックしていない場合は、ポートが開かれます。
通常、ポートは、実行中のプログラムがあり、ポートでリスニングである場合に開いていると見なされます。このコマンド(他の多くのコマンドの中で)を使用して、プログラムが実行している(LISTENING)ポートを確認できます。
$ netstat -tulnp | grep "LISTEN"
このコマンドでポートを使用しているアプリケーションを特定できます(この場合、ポート80を確認します)。
$ Sudo lsof -i tcp:80
開いたポート
サーバーマシンで実行されていたプロセスを強制終了し、開いているポートが表示されなくなった。何も実行されていないため、開かれていることはわかりません。
問題のポートをテストするには、netcatを実行します。 Netcatは、TCPおよびUDP接続およびリッスン用のユーティリティです。
ポートでこれを実行します。
$ netcat -l 1234
次に、別のコンピューターから次を実行します。
$ telnet serverIP 1234
Trying 192.168.15.81...
Connected to ubunzeus.apollo3.com.
Escape character is '^]'.
this is a test
サーバーのコンソールに「これはテストです」というテキストが表示されます。これはポートをテストする方法です。ヒットできます Ctrl+C サーバー上でテスト後にアプリケーションをキャンセルします。
あなたのポートで何が起こっているのかを明確にする助けになれば幸いです。