Linux nethogs コマンド
nethogs は、プロセスごとにネットワーク帯域幅の使用状況をリアルタイムで監視するためのオープンソースの Linux コマンドラインツールです。従来のネットワーク監視ツール(iftop など)とは異なり、nethogs はポートやプロトコルに基づいてトラフィックを集計するのではなく、各プロセスのネットワークアクティビティを直接表示します。
なぜ nethogs を使うのか
Linux システムでネットワークに異常が発生した場合、管理者は通常、どのプロセスが大量の帯域幅を占有しているかを迅速に特定する必要があります。nethogs には以下の利点があります:
- プロセスレベルの監視:各プロセスのネットワークトラフィックを直接表示
- リアルタイム更新:デフォルトで毎秒データを更新
- 設定不要:そのまま使え、複雑な設定は不要
- 軽量:リソース消費が少なく、本番環境での使用に適している
nethogs のインストール
Ubuntu/Debian システム
例
sudo apt-get update
sudo apt-get install nethogs
sudo apt-get install nethogs
CentOS/RHEL システム
例
sudo yum install epel-release
sudo yum install nethogs
sudo yum install nethogs
ソースコードからコンパイルしてインストール
例
git clone https://github.com/raboof/nethogs
cd nethogs
make && sudo make install
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 の出力には以下の主要な情報が含まれます:
- PID:プロセスID
- USER:そのプロセスを実行しているユーザー
- PROGRAM:プロセス名またはコマンドライン
- DEV:使用中のネットワークインターフェース
- SENT:そのプロセスが送信するデータ速度(KB/秒)
- 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に制限する
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 システム管理者のツールボックスに不可欠なネットワーク診断ツールであり、特に以下の用途に適しています:
- 異常なネットワークアクティビティを持つプロセスを迅速に特定する
- サーバー上の各サービスの帯域幅使用状況を監視する
- ネットワークパフォーマンスの問題を調査する
この記事で紹介した基本的な使い方と高度なテクニックにより、nethogs を使いこなしてシステムのネットワークトラフィックを監視および管理できるようになるでしょう。
その他の拡張