在几个端口上侦听的盒子上有很多进程。
我正在尝试将端口映射到pid。
问题是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不报告使用的端口?
我以root身份运行。 我正在使用lsof和os版本的组合:
Solaris 10 sparc上的lsof v4.77
lsof v4.72在Redhat4.2上
等等
我知道linux解决scheme可以使用“netstat -p”,
所以我想我只是在寻找为什么solaris不工作,但我发现lsof经常是沉默的,没有显示我期望的数据。
与lsof不同的是,您更愿意使用属于Solaris并且受Sun支持的pfiles。
它的用法稍微有点不同,因为它期望一个pid作为参数,但你可以实现你想要的东西,如:
pfiles $(pgrep libhttpd)
甚至,如果你不知道进程名称:
pfiles /proc/*