Networking
如何知道某個 PID 監聽了哪些埠?
我有一個特定程序的 PID,它在我的 OS X 上偵聽某些埠,我需要知道該程序偵聽了哪些埠。我該怎麼做?
我知道我可以
lsof
用來知道哪個程序正在偵聽某個埠,但我需要執行逆操作。謝謝你。
UPD
OS X 使用 BSD 實用程序,所以我有 BSD
netstat
而不是 Linuxnetstat
。Linuxnetstat
有-p
顯示 PID 的選項,BSDnetstat
用於-p
指定埠並且沒有顯示 PID 的選項。
我通過深入閱讀自己找到了解決方案
man lsof
。(是的,RT*M 仍然有幫助。)感謝@Gilles 瞄準。這是解決方案:
lsof -aPi -p 555
(555 是 PID)。解釋:
-p
指定PID號;-i
僅顯示網路設備;-a
對上述兩個條件進行 AND 運算(否則它們將被 ORed);-P
顯示埠號(而不是預設的埠名稱)。此外,可以相應地使用
lsof -aPi4 -p 555
或lsof -aPi6 -p 55
僅用於 IPv4 或 IP6 地址。如果輸出將由另一個程序
-Fn
選項解析可能會有所幫助。使用此選項lsof
將產生“其他程序的輸出”而不是格式良好的輸出。lsof -aPi4 -Fn -p 555
將輸出如下內容:p554 nlocalhost:4321
PS 所有這些我都在我的 OS X El Capitan 上進行了測試,但我可以看到它也應該在 Linux 上執行。