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