Tcp

如何確定給定程序(linux)正在打開哪些 TCP/UDP 埠?

  • September 6, 2012

我知道如何使用 lsof 或 netstat 做相反的事情(找出打開給定埠的程序),但對 Google 的廣泛研究並沒有幫助我解決相反的問題。

我知道我可以將“netstat -np”與一些 grep 和 sed 結合使用,但它看起來很老套。是否有“lsof -i tcp:80”的反轉版本可以顯示給定程序打開的所有本地埠?

查看手冊頁,您會發現可以使用-p選項指定程序 ID,以及將-i顯示限制為 Internet 域套接字的選項(-i4僅適用於 ipv4 和-i6僅適用於 ipv6)。所以如果你把它們串起來…

lsof -p <pid> -i

…你得到的並不完全是你想要的,因為預設情況下lsof一起你的請求。所以添加-a() 標誌…

lsof -p <pid> -a -i

…您將獲得由指定程序 ID 打開的 IPv4 套接字列表。

我知道我可以netstat -np結合一些 grep 和 sed 使用,但它看起來很老套。

這個怎麼樣:

# netstat --inet -nlp | grep <processname>

是否有相反的版本lsof -i tcp:80會顯示給定程序打開的所有本地埠?

# lsof -c <processname> | grep LISTEN

引用自:https://serverfault.com/questions/424749