Debian: Узнайте, какой номер порта прослушивает процесс

Как мы все знаем, порт одновременно используется только одним процессом или службой. Порт идентифицирует определенную службу или процесс, запущенный в системе. Иногда при устранении неполадок нам необходимо знать, какой номер порта прослушивает определенный процесс. Все процессы, запущенные в системе, имеют идентификационный номер процесса (PID) и номер порта. Чтобы узнать, какой номер порта прослушивает определенный процесс, есть несколько способов, о которых мы расскажем в этой статье.

Прежде чем приступить к статье, убедитесь, что у вас есть права root. Это поможет вам получить исчерпывающую информацию о процессах, запущенных в вашей системе.

Метод 1: Использование команды netstat

Netstat - это наиболее распространенная утилита командной строки, которая может использоваться для отображения информации о сетевых подключениях, статистики интерфейсов и таблиц маршрутизации. С ее помощью можно также узнать, какой номер порта используется определенным процессом. Вам не нужно устанавливать ее, так как она уже установлена в репозиториях всех дистрибутивов Linux. Однако, если он еще не установлен в вашей системе, используйте следующую команду для его установки:

Чтобы узнать номера портов, которые прослушиваются процессами, выполните следующую команду в Терминале:

Следующий результат показывает номера портов, которые используются определенными процессами, а также их идентификаторы процессов (PID).

Проверка порта с помощью команды netstat

Если у вас нет привилегий sudo и вы запустили вышеуказанную команду без sudo, она не отобразит имя программы и PID, как показано в следующем выводе.

ограниченный просмотр netstat без sudo

Теперь давайте посмотрим, что означает ltnp в приведенной выше команде:

  • l - показать прослушиваемые сокеты
  • t - показать TCP-соединения
  • n - показать IP-адреса и номера портов в числовом виде
  • p - показать PID/имя программы

Если мы посмотрим на вывод команды sudo netstat -ltnp, то в четвертом столбце будет именно то, что мы ищем: номер порта, на котором прослушивается процесс.

Чтобы получить информацию о порте отдельного процесса, вы можете просто передать вывод netstat с помощью команды grep.

Например, чтобы найти номер порта для "sshd", используйте следующую команду:

Проверка порта sshd

Аналогично, если вы хотите узнать имя процесса, который прослушивает определенный порт, допустим, порт 22, используйте следующую команду:

Проверка процесса по номеру порта

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

С помощью команды lsof вы можете просмотреть список всех файлов, открытых процессами, запущенными в вашей системе. Lsof может выступать в качестве единого источника для получения информации, которая в противном случае требует использования большого набора инструментов администрирования. Как и в случае с командой netstat, для получения подробной информации вам потребуются привилегии sudo.

Если lsof еще не установлен в вашей системе, используйте следующую команду в Терминале для его установки:

После установки вы можете использовать утилиту lsof для поиска процессов, запущенных на определенных портах. Если вы запустите утилиту lsof без каких-либо параметров, она выдаст много информации, которую вам будет трудно понять. Однако использование параметров в lsof может помочь вам отфильтровать и сконцентрироваться на нужных результатах.

Теперь, чтобы найти процесс, прослушивающий определенный порт, допустим, порт 22, используйте следующую команду:

Эта команда вернет все процессы, запущенные на порту 22.

Проверка порта с помощью команды lsof

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

fuser - это команда Linux, которая используется для поиска идентификатора процесса, использующего файл, каталог или файловую систему. Мы можем использовать эту команду для поиска процесса, запущенного на определенном порту.

Для использования команды fuser вам потребуется утилита psmisc. Если она еще не установлена в вашей системе, выполните следующую команду для ее установки:

Установка пакета psmisc

Для просмотра процессов, запущенных на любом порту, допустим, TCP-порту 22, выполните следующую команду в Терминале:

команда fuser

Приведенная выше команда вернула процесс, прослушивающий порт номер 22. Теперь, чтобы просмотреть имя процесса по любому идентификатору процесса, используйте следующий синтаксис команды:

В нашем случае это будет

Проверьте порт с помощью ps

Из приведенного выше результата видно, что имя процесса sshd соответствует идентификатору процесса 349. Это означает, что sshd с идентификатором процесса 349 прослушивает порт 22.

В этой статье мы рассмотрели некоторые утилиты командной строки, которые можно использовать для просмотра портов, прослушиваемых определенным процессом.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий