Linux

在 Linux 上,我如何知道哪個程序正在發送乙太網數據包?

  • October 25, 2021

我正在執行 gkrellm,這表明我的 Debian Linux 系統上的某個程序正在向 eth0 寫入大約 500KB/s。我想知道它是哪個程序。我對 netstat 有一點了解,但它顯示了大量打開的 TCP 連接,我似乎無法讓它產生任何有關流量的資訊。

有誰知道我如何獲得實際使用eth0 介面的程序列表,以便我可以追踪違規者?


跟進:Debian Linux 發行版包含一個nethogs可以徹底解決這個問題的軟體包。不太符合要求的相關工具包括iftopnetstatlsof.

我更喜歡nethogs。這是一個基於 ncurses 的小型控制台程序,可以方便地顯示每個程序的網路流量狀態。

netstat -ptu將為您提供所有 tcp 和 udp 連接的擁有程序 ID(以及標準 netstat 資訊)。(普通使用者無法辨識所有程序。)

如果某些東西正在發送相當數量的持續流量,您應該分別在第 2 列和第 3 列上看到Recv-QSend-Q

例子:

Recv-Q

sudo watch -n .1 'netstat -tup | grep -E "^[tc,ud]p[6]{0,1}" | sort -nr -k2'

Send-Q

sudo watch -n .1 'netstat -tup | grep -E "^[tc,ud]p[6]{0,1}" | sort -nr -k3'

如果您懷疑該程序正在被另一個程序觸發ps axf

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