私はgkrellmを実行しています。これは、私のDebian Linuxシステムの一部のプロセスが約500KB /秒をeth0に書き込んでいることを示しています。それがどのプロセスであるかを知りたいのですが。私はnetstatについて少し知っていますが、これは膨大な数のオープンTCP接続を示しており、トラフィックに関する情報を生成させることができません。
実際にsing eth0インターフェイスであるプロセスのリストを取得して、違反者を追跡できる方法を誰かが知っていますか?
[〜#〜] followup [〜#〜]:Debian Linuxディストリビューションには、この問題を確実に解決するnethogs
パッケージが含まれています。あまり注目されていない関連ツールには、iftop
、netstat
、lsof
などがあります。
私は nethogs を好みます。これは、プロセスごとのネットワークトラフィックステータスを便利な方法で表示する小さなncursesベースのコンソールプログラムです。
netstat -ptu
は、すべてのtcp接続とudp接続の所有プロセスID(および標準のnetstat情報)を提供します。 (通常のユーザーはすべてのプロセスにidを付けることができません。)
何かが一定量の一定のトラフィックを送信している場合は、それぞれRecv-Q
またはSend-Q
列2と3に表示されます。
例:Recv-Q
Sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k2'
Send-Q
Sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k3'
そのプロセスが別のプロセスps axf
によってトリガーされていると思われる場合。
データを送受信するプロセスだけを探している場合のより手動の操作は、lsof
コマンドを実行することです。これは、o.sへのファイル記述子であるため、ネットワーク接続を含む各プロセスのすべての開いているファイルをリストします。
これがあなたが探しているものかどうかわかりません。
iftop
(シンプルなテキストベース)またはntop
(グラフィカル)をインストールします。
tcpdump
を使用して、このインターフェース上のいくつかのパケットをスニッフィングします。
# tcpdump -vv -s0 -i eth0 -c 100 -w /tmp/eth0.pcap
クライアントにコピーし、Wiresharkで開いて何が起こるかを確認します。