我知道如何使用 lsof 或 netstat 做相反的事情(找出哪个进程打开了给定的端口),但是在 Google 上进行广泛的研究并没有帮助我解决相反的问题。
我知道我可以将“netstat -np”与一些 grep 和 sed 结合使用,但这似乎有点不靠谱。有没有“lsof -i tcp:80”的反向版本可以显示给定进程打开的所有本地端口?
答案1
查看手册页,您会发现可以使用-p
选项指定进程 ID,以及选项-i
将显示限制为 Internet 域套接字(-i4
仅适用于 ipv4 和-i6
仅适用于 ipv6)。所以如果你把它们串在一起...
lsof -p <pid> -i
...你得到的并不是你想要的,因为默认情况lsof
下或者合并您的请求。因此添加-a
(和) 旗帜...
lsof -p <pid> -a -i
...您将获得由指定进程 ID 打开的 IPv4 套接字列表。
答案2
我知道我可以
netstat -np
结合使用一些 grep 和 sed,但这似乎很不方便。
这个怎么样:
# netstat --inet -nlp | grep <processname>
是否有一个反向版本
lsof -i tcp:80
可以向我显示给定进程打开的所有本地端口?
# lsof -c <processname> | grep LISTEN