如何找到负责特定TCP套接字的程序(linux)

如何找到负责特定TCP套接字的程序(linux)
joe@server:~$ sudo lsof -i :36168
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    23059 activemq   15u  IPv6 109382      0t0  TCP *:36168 (LISTEN)

从上面的输出中我想禁用端口 36168,但不知道在哪里。我怎样才能准确找到此端口的配置文件来修改它?

grep对此进行测试没有结果。而且我不想使用防火墙。

答案1

lsof输出中,您可以得到PID打开端口的进程的编号。执行以下命令ps -AH查看进程的层次结构列表并查找特定的进程PID。此进程将缩进到其他进程的“下方”,向上扫描树直到找到父进程(如果您走得太远init,请返回下一级)。

一旦您确定了父进程,您就应该能够使用发行版的init脚本来停止该进程。

答案2

我总是发现定影器更容易

fuser 80/tcp

它将列出使用 tcp 在端口 80 上运行的所有 pid

答案3

netstat -putan | grep 80 | grep LISTEN

给出

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1682/apache2 

可以看出,本例中PID=1682的apache2是监听80端口的进程。

答案4

众所周知的端口位于 /etc/services 中。提到的端口似乎由 activemq 使用,可能不是标准化的。请查看 activemq 的配置,或部署的 webapps(如果它在 web 容器中运行)。如果将其绑定到本地地址(127.0.0.1 或 ::1),则可以保护安装。如果您不需要 activemq,只需停止该应用程序即可。

相关内容