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)一些进程在内核中运行
这种情况会发生在 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)
对于已建立的连接,这只应发生在从内核空间发起的连接(例如 NFS 或 DRBD)。显然,等待连接可能会导致其下方的进程死亡。如果您无法找出导致给定连接的原因,请粘贴输出,有人可以告诉您它是什么。
| 归档时间: |
|
| 查看次数: |
41043 次 |
| 最近记录: |