Команда Linux nethogs

Linux 命令大全Энциклопедия команд Linux


nethogs — это инструмент командной строки Linux с открытым исходным кодом, используемый для мониторинга использования пропускной способности сети в реальном времени по процессам. В отличие от традиционных инструментов сетевого мониторинга (таких как iftop), nethogs не измеряет трафик на основе портов или протоколов; вместо этого он напрямую отображает сетевую активность каждого процесса.


Зачем использовать nethogs

В Linux-системах, когда возникают сетевые аномалии, администраторам обычно нужно быстро определить, какой процесс потребляет большой объём пропускной способности. nethogs предлагает следующие преимущества:

  1. Мониторинг на уровне процессов: напрямую отображает сетевой трафик каждого процесса
  2. Обновления в реальном времени: по умолчанию обновляет данные каждую секунду
  3. Не требует настройки: работает сразу из коробки, сложная настройка не требуется
  4. Лёгкий: низкое потребление ресурсов, подходит для production-сред

Установка 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: Идентификатор процесса
  2. USER: пользователь, запустивший процесс
  3. PROGRAM: имя процесса или командная строка
  4. DEV: используемый сетевой интерфейс
  5. SENT: скорость отправки данных процессом (KB/sec)
  6. RECEIVED: скорость приёма данных процессом (KB/sec)

Практические сценарии применения

Сценарий 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

Решение: Запустите nethogs с sudo или от имени пользователя root.

Проблема 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 命令大全Энциклопедия команд Linux

Другие расширения