为什么 lsof 在 14.04 中不显示本地主机 TCP 连接?

为什么 lsof 在 14.04 中不显示本地主机 TCP 连接?

我有两台服务器,分别运行 12.04.4 和 14.04.1。两者都有 nginx(端口 80)和一个 Java 进程(端口 8080)。

正如预期的那样,12.04 计算机上 Java 进程 () 的 lsof 输出sudo lsof -nP -p $PID显示了端口 8080 的几个已建立的连接(例如TCP 127.0.0.1:8080->127.0.0.1:58067 (ESTABLISHED)

但是 14.04 机器没有。它只显示监听端口 ( TCP *:8080 (LISTEN))。但我确信有活动连接(通过访问日志、Java 进程状态输出等确认)。

12.04 版中发生了哪些变化导致出现此行为?此变化是否是我从 12.04 版升级到 14.04 版后出现“打开文件过多”错误的原因?

12.04:

$ dpkg -l lsof linux-image-virtual openjdk-7-jre nginx
||/ Name                                        Version
+++-===========================================-===========================================
ii  linux-image-virtual                         3.2.0.59.70
ii  lsof                                        4.81.dfsg.1-1build1
ii  nginx                                       1.6.1-1~precise
ii  openjdk-7-jre                               7u65-2.5.1-4ubuntu1~0.12.04.1

14.04:

$ dpkg -l lsof linux-image-virtual openjdk-7-jre nginx-full
||/ Name                                  Version                 Architecture            Description
+++-=====================================-=======================-=======================
ii  linux-image-virtual                   3.13.0.32.38            amd64
ii  lsof                                  4.86+dfsg-1ubuntu2      amd64
ii  nginx-full                            1.4.6-1ubuntu3          amd64
ii  openjdk-7-jre:amd64                   7u65-2.5.1-4ubuntu1~0.1 amd64

相关内容