Linux nethogs コマンド

Linux コマンド大全


nethogs は、プロセスごとにネットワーク帯域幅の使用状況をリアルタイムで監視するためのオープンソースの Linux コマンドラインツールです。従来のネットワーク監視ツール(iftop など)とは異なり、nethogs はポートやプロトコルに基づいてトラフィックを集計するのではなく、各プロセスのネットワークアクティビティを直接表示します。


なぜ nethogs を使うのか

Linux システムでネットワークに異常が発生した場合、管理者は通常、どのプロセスが大量の帯域幅を占有しているかを迅速に特定する必要があります。nethogs には以下の利点があります:

  1. プロセスレベルの監視:各プロセスのネットワークトラフィックを直接表示
  2. リアルタイム更新:デフォルトで毎秒データを更新
  3. 設定不要:そのまま使え、複雑な設定は不要
  4. 軽量:リソース消費が少なく、本番環境での使用に適している

nethogs のインストール

Ubuntu/Debian システム

例

sudo apt-get update
sudo apt-get install nethogs

CentOS/RHEL システム

例

sudo yum install epel-release
sudo yum install nethogs

ソースコードからコンパイルしてインストール

例

git clone https://github.com/raboof/nethogs
cd nethogs
make && sudo make install

基本的な使い方

すべてのネットワークインターフェースを監視

sudo nethogs

出力例:

PID   USER    PROGRAM              DEV        SENT      RECEIVED
1234  root    /usr/bin/ssh         eth0      12.456    5.678 KB/sec
5678  bob     /usr/bin/firefox     wlan0     45.789    32.123 KB/sec

特定のネットワークインターフェースを監視

sudo nethogs eth0

更新間隔の設定(秒)

sudo nethogs -d 5  # 每5秒刷新一次

よく使うコマンドオプション

オプション 説明
-d 更新間隔時間を設定(秒)
-c 指定した回数更新したら終了
-t トレースモード(累計トラフィックを表示)
-p プロミスキャスモード(すべてのトラフィックを監視)
-V バージョン情報を表示
-h ヘルプ情報を表示

高度な使い方

1. 特定のプロセスを追跡

sudo nethogs -p | grep "进程名"

2. 監視結果をファイルに保存

sudo nethogs -t > network_log.txt

3. 特定ユーザーのプロセスを監視

sudo nethogs -u username

4. オプションの組み合わせ

sudo nethogs -d 10 -c 6 eth0  # 每10秒刷新一次,共刷新6次后退出

出力フィールドの説明

nethogs の出力には以下の主要な情報が含まれます:

  1. PID:プロセスID
  2. USER:そのプロセスを実行しているユーザー
  3. PROGRAM:プロセス名またはコマンドライン
  4. DEV:使用中のネットワークインターフェース
  5. SENT:そのプロセスが送信するデータ速度(KB/秒)
  6. RECEIVED:そのプロセスが受信するデータ速度(KB/秒)

実際の適用シナリオ

シナリオ1:ネットワークが遅い問題の診断

sudo nethogs

どのプロセスが最も帯域幅を占有しているかを確認することで、問題の原因を迅速に特定します。

シナリオ2:サーバーの異常なトラフィックを監視

sudo nethogs -d 30 -c 12 > /var/log/nethogs.log

30秒ごとに記録し、合計6分間のネットワークアクティビティを記録します。

シナリオ3:特定プロセスの帯域幅を制限

例

# まずnethogsを使用して高トラフィックのプロセスを特定する
sudo nethogs

# 次にtcまたはwondershaperを使用して帯域幅を制限する
sudo wondershaper eth0 1024 512  # アップロードを1024Kbps、ダウンロードを512Kbpsに制限する

よくある問題の解決

問題1:権限不足

Error: opening device eth0: Operation not permitted

解決策:sudoを使用するか、rootユーザーでnethogsを実行します。

問題2:プロセス名を識別できない

PID   USER    PROGRAM              DEV        SENT      RECEIVED
1234  -       -                    eth0      12.456    5.678 KB/sec

解決策:プロセスが終了したか、nethogs にプロセス情報を取得するための十分な権限がない可能性があります。

問題3:特定のネットワークインターフェースに対応していない

Error: No such device exists (device_name)

解決策:使用するifconfig或ip aコマンドで正しいインターフェース名を確認します。


代替ツールの比較

ツール 特徴 適用シナリオ
nethogs プロセスごとにトラフィックを表示 問題のプロセスを迅速に特定
iftop 接続ごとにトラフィックを表示 特定のネットワーク接続を分析
nload インターフェースごとに総トラフィックを表示 全体的な帯域幅の使用状況を監視
bmon グラフィカルインターフェース トラフィックの傾向を直感的に確認

まとめ

nethogs は、Linux システム管理者のツールボックスに不可欠なネットワーク診断ツールであり、特に以下の用途に適しています:

  1. 異常なネットワークアクティビティを持つプロセスを迅速に特定する
  2. サーバー上の各サービスの帯域幅使用状況を監視する
  3. ネットワークパフォーマンスの問題を調査する

この記事で紹介した基本的な使い方と高度なテクニックにより、nethogs を使いこなしてシステムのネットワークトラフィックを監視および管理できるようになるでしょう。


Linux コマンド大全

その他の拡張