在什么情况下进程使用的端口不会显示在netstat -a
输出中?
我正在jenkins
我的机器上运行。它正在侦听端口 8080。我试图启动另一个尝试绑定到同一端口的进程,但失败并显示端口已在使用中的错误。
现在,当我这样做时netstat -a | grep 8080
,它不会出现在输出中。停止jenkins
我的进程成功绑定到 8080 后。有任何线索发生了什么吗?
我运行的是 CentOS。
答案1
刚刚在 Ubuntu 14.04 上遇到了类似的情况。事实上,jenkins 默认端口(8080)映射到 /etc/services 中的“http-alt”名称。您可以轻松地检查这一点
grep 8080 /etc/services
http-alt 8080/tcp webcache # WWW caching service
http-alt 8080/udp
除了 netstat 之外,您还可以考虑使用 ss
ss -ntl | grep 8080
或者
ss -tl | grep http-alt
答案2
在哪些情况下,进程使用的端口不会显示在 netstat -a 输出中。
如果一切正常,永远不会。如上所述,您可以将端口号替换为 中列出的服务名称/etc/services
。
使用netstat -na
可确保服务端口不会转换为服务名称。
答案3
我遇到一个问题,服务在端口 443 上运行良好,但 netstat 中根本没有 443 端口。最后我找到了一些iptables
转发规则,可以列出来
iptables -t nat -L -n -v
答案4
我总是使用:
netstat -tupna
这样你就不会错过任何事情。