Інтернет став невід’ємною частиною нашого життя, але іноді виникає потреба відстежувати, які саме процеси в Linux використовують ваше з’єднання. На щастя, завдяки набору стандартних утиліт Linux, моніторинг споживання пропускної здатності мережі окремими процесами стає легким завданням. Розгляньмо деякі з цих інструментів:
МУЛЬТИМЕДІА ДНЯ
ПЕРЕЙДІТЬ ДО ВМІСТУ
1. Nethogs
Nethogs – це інструмент, який аналогічний htop або top, але призначений для відстеження активності мережі замість завантаження процесора та пам’яті. Він показує знімок процесів, які в даний момент використовують мережеве з’єднання.
Так само, як top, htop чи atop, nethogs працює в повноекранному режимі та оновлюється кожні кілька секунд, щоб відображати поточне використання мережі окремими процесами.
Інсталяція nethogs є досить простою. Вам потрібно скористатися менеджером пакетів вашої системи.
Для Debian та Ubuntu, наприклад, команда виглядає так:
sudo apt install nethogs
А для Arch Linux:
sudo pacman -S nethogs
Для сімейства Red Hat:
sudo dnf install nethogs
Для запуску nethogs потрібні права root:
sudo nethogs
Щоб дозволити звичайним користувачам запускати nethogs, скористайтеся цією командою:
sudo setcap "cap_net_admin,cap_net_raw+pe" /path/to/nethogs
Замініть “/path/to/nethogs” на абсолютний шлях до файлу nethogs. Його можна знайти за допомогою команди which:
which nethogs
2. lsof
Lsof, хоча і є утилітою для виведення списку відкритих файлів, також здатна відображати список відкритих мережевих з’єднань. Опція -i виводить список з’єднань з інтернетом, що належать запущеним процесам в системі. В Linux, зрештою, все є файлом.
Для перегляду поточних інтернет-з’єднань використовуйте наступну команду:
lsof -i
lsof покаже назву команди з відкритим інтернет-з’єднанням, її PID, дескриптор файлу, тип з’єднання, розмір, протокол та офіційну назву файлу з’єднання.
Використання опцій -i4 та -i6 дозволяє фільтрувати з’єднання за протоколами IPv4 та IPv6 відповідно.
Імовірно, lsof вже встановлений у вашій системі. Якщо ні, його легко встановити на більшості дистрибутивів Linux.
Для Debian та Ubuntu введіть:
sudo apt install lsof
А для Arch:
sudo pacman -S lsof
Для дистрибутивів сімейства Red Hat:
sudo dnf install lsof
3. netstat
Netstat – потужний інструмент, що дозволяє переглядати мережеві з’єднання в системі. Сам по собі він не показує, до яких процесів належать з’єднання, але за допомогою спеціального параметра можна отримати цю інформацію, як і у випадку з lsof.
Netstat є частиною пакету net-tools. Його можна встановити на більшості дистрибутивів Linux за допомогою стандартного менеджера пакетів.
Наприклад, для Debian чи Ubuntu:
sudo apt install net-tools
В Arch Linux:
sudo pacman -S net-tools
Щоб інсталювати netstat на Fedora, CentOS і RHEL, виконайте:
sudo dnf install net-tools
Netstat можна запустити з командного рядка. За замовчуванням він показує протокол, адресу та стан з’єднання, але опція -p додає стовпчик з ідентифікатором процесу та назвою команди.
netstat -p
Після запуску netstat просто показує список всіх мережевих з’єднань і завершує роботу. За допомогою параметра -c можна отримати постійно оновлюваний список з’єднань:
netstat -pc
Це нагадує використання nethogs, але перевагою є можливість перенаправляти вивід в інші програми, наприклад, grep або пейджер:
netstat -p | grep 'systemd'
Щоб побачити всі процеси з мережевими з’єднаннями, потрібно запустити netstat від імені root:
sudo netstat
Тепер ви знаєте, які програми Linux використовують вашу пропускну здатність
Linux, як і багато інших сучасних ОС, глибоко інтегрований з Інтернетом. Іноді буває важко відстежити, які саме процеси використовують пропускну здатність. Завдяки таким інструментам, як nethogs, lsof та netstat, ви можете легко контролювати процеси, що мають відкриті з’єднання.
Іноді процеси можуть “виходити з ладу”, навіть у контексті мережевих підключень. У Linux ви можете легко зупинити будь-які проблемні процеси.