Как узнать, какой процесс использует тот или иной порт

30 Ноября 2018

Иногда полезно знать, какой процесс занял тот или иной порт, например, порт 80. В этой статье будет рассказано, как это сделать в Linux.

Решить поставленную задачу можно с помощью одной из команд — netstat, fuser и lsof. Также можно использовать псевдофайловую систему /proc (однако это менее удобный способ и мы его рассматривать не будем). Далее будут показаны примеры использования этих команд.

Использование netstat

Представим, что нам нужно найти процесс, использующий порт 80. Попробуем сделать это с помощью netstat.

1.png

Определяем процесс, использующий порт 80 с помощью netstat

В данном случае видно, что порт 80 используется процессом apache2. 11681 — это PID процесса. Получить дополнительную информацию о процессе можно командами:

2.png

Информация о процессе

Можно также ввести команду ps -ax | grep apache2 для того, чтобы узнать, какие процессы с именем apache2 еще запущены.

3.png

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

Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения

Использование команды lsof

Узнать, какой процесс использует наш порт, можно и с помощью команды lsof:

4.png

Использование команды lsof

А вот здесь уже более интересный вывод. Наш процесс с PID 11681 работает от имени root, остальные с именем apache2 — от имени www-data. Получается, что это родительский процесс веб-сервера, а все остальные — это его дочерние процессы, что и подтверждается командой htop:

5.png

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

Использование команды fuser

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

6.png

Использование команды fuser

Получить консультацию специалиста