即使使用sudo,netstat的PID /程序名称仍然是破折号

8
developer@LinuxKernel:~> sudo netstat -elnopt
developer's password:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name    Timer
tcp        0      0 0.0.0.0:10080           0.0.0.0:*               LISTEN      1003       3061421021 -                   off (0.00/0/0)

关于我的经验,我有权使用sudo检查netstat的PID/程序名称,请问如何解释这个问题,内核版本为2.6.16.60,net-tools版本为1.6,netstat版本为1.42。


也许你的 netstat 是一个 #!/bin/sh 脚本。使用 file $(which netstat) 进行检查。 - Basile Starynkevitch
@BasileStarynkevitch 谢谢,刚刚确认,它是一个 ELF 64 位 LSB 可执行文件。 - http8086
当我使用一个 Bash 脚本来使用 netcat 对我的机器进行端口扫描时,PID/程序名称都显示为 -,但是状态为 TIME_WAIT。但是该进程是由 root 拥有的;这个端口最终在几分钟内会关闭。我对我的局域网接口 IP 进行了端口扫描,并且它显示为本地地址和外部地址,都在相同的临时端口上;这让我感到可能相关。尽管我没有以 root 权限运行 netcat,但我确实以 root 身份运行了 netstat。不确定这是否有帮助,但这是额外的上下文信息。 - Life5ign
1个回答

5
当内核本身在侦听时,会出现短横线“-”,因此没有相关的进程显示。但我不确定哪个内核线程正在使用tcp/10080端口。

1
当套接字即将在不久的将来关闭时,- 也可能出现(您将在 State 列中看到 TIME_WAIT)。但是,在 LISTEN 状态下出现 - 真的很奇怪... - flaz14
如果是内核在监听,就不应该存在用户权限,对吧? - http8086
file $(which netstat) 显示 /usr/bin/netstat: ELF 64-bit LSB shared object。调用 /usr/bin/netstat -Watnp | grep LISTEN 显示 172.16.13.93: 7777 LISTEN -,因此不是 TIME_WAIT。有任何想法可以监听那里吗? - andrej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接