我试图终止在端口 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
) 中,但仍然看不到打开的端口。我也尝试过禁用防火墙,但仍然没有成功。
因此我需要打开该端口,以便我可以从主机进行远程调试。我确信我已经遗漏了一些关键的东西。
我是不是要走向衰落了?任何帮助我都会感激不尽。
答案1
在 Ubuntu 上,所有端口都是开放的,除非有防火墙或应用程序阻止它。在正常情况下,在端口上运行的应用程序用于聆听.以便它可以从端口接收。
这阻塞或者结束语端口正在使用对防火墙块的引用。
因此,如果您的防火墙没有阻止该端口,则该端口处于打开状态。
当某个程序正在运行并且聆听在端口上。您可以使用以下命令(以及许多其他命令)判断哪些端口有程序正在运行(侦听):
$ netstat -tulnp | grep "LISTEN"
您可以使用此命令来识别哪个应用程序正在使用该端口(在本例中检查端口 80):
$ sudo lsof -i tcp:80
端口已打开
你提到你终止了服务器上正在运行的进程,现在无法看到正在打开的端口。您看不到它被打开,因为上面没有运行任何程序。
您可以通过运行来测试有问题的端口网猫就可以了。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
希望这有助于澄清您的端口上发生的情况。