![如何找到负责特定TCP套接字的程序(linux)](https://linux22.com/image/555992/%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E8%B4%9F%E8%B4%A3%E7%89%B9%E5%AE%9ATCP%E5%A5%97%E6%8E%A5%E5%AD%97%E7%9A%84%E7%A8%8B%E5%BA%8F%EF%BC%88linux%EF%BC%89.png)
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,只需停止该应用程序即可。