我在一个方框上有许多进程在监听几个端口。
我正在尝试将端口映射到pids。
问题是,lsof并没有告诉我哪些端口属于哪个进程。
如果apache监听端口80,我可以通过netstat看到它侦听:
user@host% netstat -an|grep LISTEN|grep 80
*.80 *.* 0 0 49152 0 LISTEN
但是,当我试图将端口80映射到pid时,我什么也得不到:
user@host% lsof -iTCP:80 -t
当我尝试查看特定pid使用的套接字时,我得到:
user@host% lsof -lnP -p31 -a -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
libhttpd. 31 0 15u IPv4 0x6002d970b80 0t0 TCP *:65535 (LISTEN)
注意NAME列中的*:65535。
有人知道为什么lsof没有报告使用中的端口吗?
我跑得像根一样。我使用的是lsof和os的混合版本:
v4.77在Solaris10 sparc上的lsof
lsof v4.72在Redhat4.2上
等
我知道linux解决方案可以使用"netstat -p",
所以我想我只是在寻找solaris不起作用的原因,但我发现lsof经常是沉默的,并且没有向我显示预期的数据。
发布于 2010-03-17 21:09:52
与lsof不同,您更愿意使用Solaris的一部分和Sun支持的pfiles。
它的用法略有不同,因为它期望pid作为参数,但您可以通过以下方式实现您想要的结果:
pfiles $(pgrep libhttpd)甚至,如果您不知道流程名称:
pfiles /proc/* https://serverfault.com/questions/123551
复制相似问题