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

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

# netstat --version net-tools 1.60 netstat 1.42 (2001-04-15) 

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

任何想法可能是错的?

UPDATE

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

这将在像NFS这样的内核进程中出现,但偶尔也会在常规应用程序中出现:RHEL 5具有相同的行为。

 # netstat -taupen | grep 30715 tcp 0 0 0.0.0.0:30715 0.0.0.0:* LISTEN 66558 81467710 - 

注意lsof,另一方面,正确的话:

 # lsof -i:30715 AppName 1598 useracct 78u IPv4 81467710 TCP *:30715 (LISTEN) 
 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:~ # 

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

1)正常权限用户执行“netstat”不能看到root启动的进程

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

对于已build立的连接,这应该只发生在从内核空间(如NFS或DRBD)启动的连接上。 很显然,等待的连接可能会让这个进程死在他们的下面。 如果你不能确定是什么导致给定的连接,粘贴输出,有人可以告诉你它是什么。

我有相同的行为,我的猜测是,netstat的行为可能已经改变。 例如,我看到“wget”的端口和程序,但不是Apache的PHP进程,这对我来说更重要。

解决方法:我重写了脚本以使用lsof(请参阅上面的提示)