Як дізнатися, який процес використовує той чи інший порт


Іноді корисно знати, який процес зайняв той чи інший порт, наприклад, порт 80. У цій статті буде розказано, як це зробити в Linux. Вирішити поставлене завдання можна за допомогою однієї з команд - netstat, fuser і lsof. Також можна використовувати псевдофайлову систему /proc (проте це менш зручний спосіб і ми його розглядати не будемо). Далі будуть показані приклади використання цих команд.

Використання netstat

Уявимо, що нам потрібно знайти процес, який використовує порт 80. Спробуємо зробити це за допомогою netstat.

Визначаємо процес, який використовує порт 80 за допомогою netstat

У цьому випадку видно, що порт 80 використовується процесом apache2. 11681 – це PID процесу. Отримати додаткову інформацію про процес можна командами:


Інформація про процес

Можна також запровадити команду ps –ax | grep apache2 щоб дізнатися, які процеси з ім'ям apache2 ще запущені.


Список процесів apache2

Використання команди lsof

Дізнатися, який процес використовує наш порт, можна і за допомогою команди lsof:


Використання команди lsof

А ось тут вже цікавіший висновок. Наш процес з PID 11681 працює від імені root, решта з ім'ям apache2 – від імені www-data. Виходить, що це батьківський процес веб-сервера, а решта – це його дочірні процеси, що і підтверджується командою htop:


Дерево процесів apache2

Використання команди fuser

Команда fuser поверне не лише PID батьківського процесу, а й PID усіх дочірніх процесів:


Використання команди fuser