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


Иногда полезно знать, какой процесс занял тот или иной порт, например, порт 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