netstat -ntap 不显示某些连接的 pid/进程名称?

18 networking linux ubuntu netstat

我有 ubuntu/hardy 服务器,内核为 2.6.24-23-server 和 netstat:

# netstat --version
net-tools 1.60
netstat 1.42 (2001-04-15)
Run Code Online (Sandbox Code Playgroud)

问题是我们有很多 ESTABLISHED 连接在netstat -ntap输出中不显示 PID 或程序名称。Netstat 是从 root 调用的,没有 chroots、grsecurity,也没有类似的东西(或者我被告知 :)。

关于可能出什么问题的任何想法?

更新

lsof -n -i 工作正常,并显示连接的 pid/进程名称。

小智 12

198_141:~ # netstat  -anp|grep 33000
tcp        0      0 0.0.0.0:53000           0.0.0.0:*               LISTEN       -                   
198_141:~ # lsof -i:33000
COMMAND   PID USER   FD   TYPE     DEVICE SIZE NODE NAME
vsftpd  28147 root    3u  IPv4 4089990174       TCP *:33000 (LISTEN)
198_141:~ # id
uid=0(root) gid=100(users) groups=16(dialout),100(users)
198_141:~ # 
Run Code Online (Sandbox Code Playgroud)

在我看来,可能有两种情况:

1)普通权限用户执行“netstat”看不到root启动的那些进程

2)一些进程在内核中运行


mik*_*ana 5

这种情况会发生在 NFS 等内核进程中,但也偶尔会发生在常规应用程序中:RHEL 5 具有相同的行为。

# netstat -taupen | grep 30715
tcp        0      0 0.0.0.0:30715           0.0.0.0:*               LISTEN      66558      81467710   - 
Run Code Online (Sandbox Code Playgroud)

请注意,另一方面,lsof 的措辞正确:

# lsof -i:30715
AppName 1598 useracct   78u     IPv4           81467710                   TCP *:30715 (LISTEN)
Run Code Online (Sandbox Code Playgroud)


wom*_*ble 1

对于已建立的连接,这只应发生在从内核空间发起的连接(例如 NFS 或 DRBD)。显然,等待连接可能会导致其下方的进程死亡。如果您无法找出导致给定连接的原因,请粘贴输出,有人可以告诉您它是什么。

  • 我想看看“实际”发生了什么,而不是对其的解释。 (3认同)