Команда Linux nethogs
nethogs — это инструмент командной строки Linux с открытым исходным кодом, используемый для мониторинга использования пропускной способности сети в реальном времени по процессам. В отличие от традиционных инструментов сетевого мониторинга (таких как iftop), nethogs не измеряет трафик на основе портов или протоколов; вместо этого он напрямую отображает сетевую активность каждого процесса.
Зачем использовать nethogs
В Linux-системах, когда возникают сетевые аномалии, администраторам обычно нужно быстро определить, какой процесс потребляет большой объём пропускной способности. nethogs предлагает следующие преимущества:
- Мониторинг на уровне процессов: напрямую отображает сетевой трафик каждого процесса
- Обновления в реальном времени: по умолчанию обновляет данные каждую секунду
- Не требует настройки: работает сразу из коробки, сложная настройка не требуется
- Лёгкий: низкое потребление ресурсов, подходит для production-сред
Установка nethogs
Системы Ubuntu/Debian
Пример
sudo apt-get install nethogs
Системы CentOS/RHEL
Пример
sudo yum install 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 включает следующую ключевую информацию:
- PID: Идентификатор процесса
- USER: пользователь, запустивший процесс
- PROGRAM: имя процесса или командная строка
- DEV: используемый сетевой интерфейс
- SENT: скорость отправки данных процессом (KB/sec)
- RECEIVED: скорость приёма данных процессом (KB/sec)
Практические сценарии применения
Сценарий 1: Диагностика проблем с медленной сетью
sudo nethogs
Быстро определите источник проблемы, проверив, какой процесс занимает больше всего пропускной способности.
Сценарий 2: Мониторинг аномального трафика сервера
sudo nethogs -d 30 -c 12 > /var/log/nethogs.log
Записывайте раз в 30 секунд, фиксируя в общей сложности 6 минут сетевой активности.
Сценарий 3: Ограничение пропускной способности для конкретного процесса
Пример
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, особенно подходит для:
- Быстрого выявления процессов с аномальной сетевой активностью
- Мониторинг использования пропускной способности каждого сервиса на сервере
- Устранение проблем с производительностью сети
Используя базовые сведения и продвинутые методы, представленные в этой статье, вы сможете уверенно применять nethogs для мониторинга и управления сетевым трафиком системы.
Другие расширения
Энциклопедия команд Linux