Linux, который прослушивает порт

Обновлено: 21.11.2024

Использование Netstat для проверки прослушиваемых портов в Linux

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

ПРИМЕЧАНИЕ: Netstat недавно устарел в пользу ss и ip route, которые теперь являются частью пакета net-tools. Более подробную информацию о маршрутах ss и ip см. в этой статье базы знаний!

Просматривая справочные страницы для netstat в нашей установке CentOS 6, мы обнаружили, что у netstat есть следующие параметры:

Параметры

--подробно, -v

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

--число, -n

--числовые хосты

--числовые-порты

--числовые-пользователи

--protocol=семейство , -A

Указывает семейства адресов (возможно, лучше описанные как протоколы низкого уровня), для которых должны отображаться соединения. family – это разделенный запятыми (',') список ключевых слов семейства адресов, таких как inet , unix , ipx , ax25 , netrom и ddp . Это имеет тот же эффект, что и использование параметров --inet, --unix (-x), --ipx, --ax25, --netrom и --ddp.

Семейство адресов inet включает сокеты протоколов raw, udp и tcp.

-c, --continuous

-e, --extend

-о, --таймеры

-p, --программа

-l, --listing

-а, --все

Показать как прослушивающие, так и не прослушивающие (для TCP это означает установленные соединения) сокеты. С параметром --interfaces показывать непомеченные интерфейсы

-Z --контекст

-T --notrim

задержка

В этой конкретной базе знаний мы обсудим, как выяснить, работает ли стандартный веб-сервер Apache на портах 80 и 443. Наш стандартный веб-сервер Apache был установлен в CentOS 6 с помощью yum, а хост SSL был также настроен на виртуальном хосте по умолчанию.

Давайте сначала убедимся, что apache действительно запущен.

root@web01:~$ состояние службы apache2
* apache2 запущен

Вывод команды в CentOS 6:

Как видно из выделенного выше текста, мы обнаружили, что http и https действительно прослушивают сокеты TCP на нашем сервере Linux. Мы могли бы искать только строку «http», используя grep. Grep будет рассмотрен в другой статье базы знаний, но вот пример:

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

Мы выполнили команды и процедуры, описанные в этой статье, в системе Ubuntu 18.04 LTS.

Способ 1. Использование команды netstat

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

Для использования команды netstat вам необходимо установить утилиту net-tools, если она еще не установлена ​​в вашей системе, с помощью следующей команды:

Затем выполните следующую команду:

  • l: отображать только прослушиваемые сокеты
  • t: показать соединение TCP
  • n: отображать адреса в числовой форме
  • p: отображать идентификатор процесса/имя программы

Например, в приведенном выше выводе команды netstat программа Apache2 с идентификатором процесса 950 выполняется на порту 80.

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

Эта команда точно сообщит вам, какой процесс запущен на порту номер 80.

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

Утилита lsof или List of Open Files помогает составить список всех открытых файлов в вашей системе Linux. Мы можем использовать эту утилиту для просмотра всех процессов, открытых на определенном порту.

Для использования команды lsof вам необходимо установить утилиту lsof, если она еще не установлена ​​в вашей системе, с помощью следующей команды:

Давайте воспользуемся lsof для просмотра службы, прослушивающей определенный порт.

Эта команда выведет список всех процессов, использующих TCP-порт номер 80.

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

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

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

Просмотрим все идентификаторы процессов, запущенных на TCP-порту 3306, с помощью следующей команды:

Вы можете указать любой номер порта в этой команде, чтобы просмотреть его прослушивающие процессы.

В приведенном выше выводе видно, что процесс с идентификатором 975 прослушивает TCP 3306.

Чтобы посмотреть, какой программе соответствует этот идентификатор процесса, выполните следующую команду:

Вывод показывает, что идентификатор процесса 975 соответствует имени программы MySDLd. Таким образом, процесс ID 975 программы MySQLd прослушивает порт номер 3306.

С помощью трех методов, описанных в этой статье, вы можете легко увидеть, какой TCP-порт прослушивает конкретный процесс в Linux.

Похожие сообщения:

Карим Буздар

Об авторе: Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Вы можете связаться с Каримом в LinkedIn

Поиск

Об этом сайте

Последние руководства

сообщить об этом объявлении

Я устанавливаю hadoop в свою систему Ubuntu. Когда я запускаю его, он сообщает, что порт 9000 занят.

чтобы узнать, существует ли такой порт, и я получил это:

Но как я могу получить PID процесса, который его удерживает?

команда netstat может работать во многих операционных системах, чтобы позволить вам это сделать, вам просто нужно найти аргументы, которые гарантируют, что она будет показывать PID для каждого известного открытого порта.

6 ответов 6

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

В современных системах ss является подходящим инструментом для получения этой информации:

Вы также можете использовать тот же вызов, который вы используете в настоящее время, но вы должны сначала повысить права с помощью sudo :

Вы также можете использовать lsof:

@AdamB Если пользователь Mac не пришел сюда в поисках поиска PID процесса с использованием определенного порта

Также вы можете использовать утилиту lsof. Требуется root.

Эта команда также предоставит вам процессы с установленными соединениями, а не только прослушивающие процессы.

Не обязательно быть пользователем root. А для тех, кто хочет получить только PID, вы можете lsof -i :25 -Fp , что выводит результат как p1234 .

Важно отметить, что вам может потребоваться запуск от имени sudo, поскольку некоторые процессы могут быть недоступны для пользователя.

Я использую «минимальную версию CentOS 7», в которой нет ни netstat, ни lsof . Но во многих дистрибутивах Linux есть команда статистики сокетов (например, ss ).

Вот пример выполнения:

Выполнение команды с помощью sudo даст вам PID. На моей машине разработки я получаю:

И, как упоминалось в других ответах, вы также можете использовать команды ss или lsof.

Также вы можете использовать фьюзер:

Об этом полезно помнить. Команды в Linux обычно не предоставляют информацию о процессах, запущенных root/sudo, если команда не запускается с помощью Sudo. Это справедливо даже в том случае, если для правильной работы команде обычно не требуется sudo.

Я работаю над системой Yocto Linux с ограниченным набором доступных инструментов Linux. Мне удалось найти процесс работающего порта с помощью следующих команд (где я нахожу процесс, использующий порт 1883):

Как видно выше, порт 1883 использует программа /usr/sbin/mosquitto.

Очень активный вопрос. Заработайте 10 репутации (не считая бонуса ассоциации), чтобы ответить на этот вопрос. Требование к репутации помогает защитить этот вопрос от спама и отсутствия ответа.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками linux process ip netstat или задайте свой вопрос.

Связано

Связанные

Горячие вопросы о сети

Чтобы подписаться на этот RSS-канал, скопируйте и вставьте этот URL-адрес в программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.18.41718

Linux является зарегистрированным товарным знаком Линуса Торвальдса. UNIX является зарегистрированным товарным знаком The Open Group.
Этот сайт никоим образом не связан с Линусом Торвальдсом или The Open Group.

В этом руководстве вы проверите порты прослушивания в Linux. При работе с сетевым подключением или проблемами, связанными с приложениями, в первую очередь следует проверить, какие порты используются и какое приложение работает на этом конкретном порту.

Введение

Прежде чем мы начнем говорить о том, как проверить порты прослушивания в Linux. Давайте кратко разберемся - что такое порт прослушивания?

При работе с сетевым подключением или проблемами, связанными с приложениями, в первую очередь следует проверить, какие порты используются и какое приложение работает на этом конкретном порту.

Прослушиваемый порт – это сетевой порт, который прослушивает приложение или процесс. Каждый порт прослушивания либо открыт, либо закрыт с помощью брандмауэра. Как правило, открытый порт — это сетевой порт, который принимает входящие пакеты из удаленных мест.

Может быть только одно приложение, прослушивающее определенный порт на одном и том же IP-адресе.

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

Шаг 1. Проверьте прослушиваемые порты с помощью netstat

1) netstat – это инструмент командной строки, предоставляющий информацию о сетевых подключениях.

Все прослушиваемые порты TCP или UDP, а также службы, использующие порты, и состояние сокетов можно просмотреть с помощью следующей команды:

Различные параметры этой команды и их значение перечислены ниже:

  • -t — показывает порты TCP.
  • -u — показывает порты UDP.
  • -n — показывать числовые адреса вместо разрешения хостов.
  • -l — показать только прослушиваемые порты.
  • -p — показывает PID и имя процесса слушателя. Вам нужно запустить команду от имени пользователя root или с привилегиями sudo, чтобы получить информацию.

Вывод будет выглядеть следующим образом:

В нашем случае ниже приведены некоторые важные столбцы:

  • Proto — протокол, используемый сокетом.
  • Локальный адрес — IP-адрес и номер порта, на котором процесс прослушивает.
  • Имя PID/программы – PID и имя процесса.

2) Если вы хотите отфильтровать результаты, используйте команду grep. Например, если вы хотите узнать, какой процесс прослушивает TCP-порт 22, введите:

Вывод показывает, что порт используется сервером SSH:

Если выходные данные пусты, это просто означает, что на этом конкретном порту ничего не прослушивается. Также можно отфильтровать список по PID, протоколу, состоянию.

netstat устарел и заменен на ss и ip . Тем не менее, это одна из наиболее часто используемых команд для проверки сетевых подключений.

Шаг 2. Проверьте порты прослушивания с помощью ss

1) Теперь ss заменил netstat . Ему не хватает нескольких функций netstat, но он предоставляет больше состояний TCP и работает быстрее. Поскольку параметры команды в основном одинаковы, переход с netstat на ss не представляет сложности.

Вы можете получить список всех прослушиваемых портов с помощью ss, используя следующую команду:

Вывод такой же, как и у netstat:

Шаг 3. Проверьте прослушиваемые порты с помощью lsof

1) lsof — мощная утилита командной строки. Он предоставляет информацию о файлах, открытых процессами. Далее, в Linux все является файлом. Вы можете представить сокет как файл, который записывает данные в сеть.

2) Затем получите список всех прослушиваемых портов TCP с типом lsof:

Ниже приведены некоторые из используемых опций:

  • -n — номера портов не преобразуются в имена портов.
  • -p — не разрешать имена хостов, показывать числовые адреса.
  • -iTCP -sTCP:LISTEN — показывает только сетевые файлы с состоянием TCP LISTEN.

Названия большинства выходных столбцов говорят сами за себя:

  • КОМАНДА, PID, ПОЛЬЗОВАТЕЛЬ — это имя, PID и пользователь, запускающий программу, связанную с портом.
  • ИМЯ — это номер порта.

3) Далее, чтобы узнать, какой процесс прослушивает определенный порт. Например, порт 3306, который вы будете использовать:

Вывод показывает, что сервер MySQL использует порт 3306:

Заключение

Мы надеемся, что это подробное руководство помогло вам проверить порты прослушивания в Linux.

Если у вас есть какие-либо вопросы или сомнения, оставьте их в комментариях ниже. Мы будем рады ответить на них.

Читайте также: