如何使用端口杀死“不可见”进程

如何使用端口杀死“不可见”进程

在 Linux 机器上,我尝试启动 Glassfish 服务器。

./startserv

这将返回以下消息:

There is a process already running using the admin port 4848 -- it is probably another instance of a Glassfish server

尝试使用以下命令来识别这是哪个进程:

lsof -t -i tcp:4848

在另一台运行 Glassfish 的计算机上,此命令返回 Glassfish 使用的进程 ID。但是,在我们遇到问题的机器上,没有返回任何内容。

鉴于没有帮助,识别并终止使用端口 4848 的进程的最佳方法是什么lsof -t -i tcp:4848

谢谢

答案1

这里可能发生了两件事。一是端口上有东西正在侦听,而 lsof 和朋友错过了它,或者启动脚本/错误消息很混乱。

网络命名空间可能会隐藏端口,但如果您想直接查询 proc 文件系统,请尝试

grep 12f0 /proc/net/tcp
grep 12f0 /proc/net/tcp6

12f0 是十六进制的 4848,这些文件是内核存储有关 TCPv4 和 TCPv6 套接字信息的位置。

如果你得到匹配的线路,那么确实有东西在监听端口,并且你的工具是sus。没有命中意味着您正在运行命名空间或者启动脚本正在运行。

您还可以使用 netcat 检查套接字是否确实在使用

nc -l 4848

如果它保持沉默,那么就可以了,如果它抱怨套接字正在使用中,那么它确实正在使用中,您需要检查您的工具和命名空间是否正常。

相关内容