Как узнать каким процессом занят порт linux

Как узнать, какой номер порта используется процессом в Linux?

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

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

Порт – это логическое соединение, которое идентифицирует конкретный процесс в Linux.

Доступны два вида порта: физическое и программное обеспечение.

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

Программный порт всегда связан с IP-адресом хоста и соответствующим типом протокола для связи. Порт используется для распознования приложения.

Большинство служб, связанных с сетью, должны открыть сокет для прослушивания входящих сетевых запросов.

Socket уникален для каждого сервиса.

Сокет – это комбинация IP-адреса, программного порта и протокола.

Область номеров портов доступна для протокола TCP и UDP.

Протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP) используют номера портов для связи.

Это значение от 0 до 65535.

Ниже приведены категории присвоений портов.

  • 0-1023: Хорошо известные порты или системные порты
  • 1024-49151: Зарегистрированные порты для приложений
  • 49152-65535: Динамические порты или частные порты

Вы можете проверить детали зарезервированных портов в файле /etc/services в Linux.

Это может быть достигнуто с использованием шести методов.

  • ss: ss используется для вывода статистики сокетов.
  • netstat: netstat отображает список открытых сокетов.
  • lsof: lsof – список открытых файлов.
  • fuser: идентификаторы процессов в списке терминов всех процессов, которые открывают один или несколько файлов
  • nmap: nmap – Инструмент сетевого исследования и сканер безопасности / портов
  • systemctl: systemctl – Управление системой systemd и менеджером сервисов

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

ss используется для вывода статистики сокетов.

Он позволяет отображать информацию, аналогичную netstat.

Он может отображать больше информации о TCP и его состоянии, чем другие инструменты.

Он может отображать статистику для всех типов сокетов, таких как PACKET, TCP, UDP, DCCP, RAW, домен Unix и т. д.

В качестве альтернативы вы также можете проверить это с помощью номера порта.

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

netstat – вывод сетевых подключений, таблиц маршрутизации, статистики интерфейсов, соединений маскарада и многоадресной рассылки.

По умолчанию netstat отображает список открытых сокетов.

Если вы не укажете каких-либо семейств адресов, будут выведены активные сокеты всех сконфигурированных семейств адресов.

Эта программа устарела. Замена для netstat – ss.

В качестве альтернативы вы также можете проверить это с помощью номера порта.

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

lsof – список открытых файлов.

Команда lsof Linux выводит информацию о файлах, открытых для процессов, запущенных в системе.

В качестве альтернативы вы также можете проверить это с помощью номера порта.

Читайте также:  Картридер драйвер windows 10 asus

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

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

Метод-5: Использование команды nmap

Nmap («Network Mapper») – это инструмент с открытым исходным кодом для проверки сети и проверки безопасности.

Он был разработан для быстрого сканирования больших сетей, хотя он отлично работает с одиночными хостами.

Nmap использует необработанные IP-пакеты в новых способах определения того, какие хосты доступны в сети, какие службы (имя и версия приложения) эти хосты предлагают, какие операционные системы (и версии ОС) они запускают, какие типы фильтров пакетов / брандмауэры используются, и десятки других характеристик

Метод-6: Использование команды systemctl

systemctl – Управление системой systemd и менеджером сервисов.

Это замена старого системного управления SysV, и большинство современных операционных систем Linux были адаптированы под systemd.

Вышеприведенный пример будет показывать фактический порт прослушивания службы SSH при запуске службы SSHD в последнее время.

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

Источник

4 способа узнать, какие порты слушают в Linux

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

Содержание:

Состояние порта либо открыто, фильтрованный, закрыто, или нефильтрованный. Порт считается открытым, если приложение на целевой машине прослушивает соединения / пакеты на этом порту.

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

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

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

$ sudo netstat -ltup

Флаг -l сообщает netstat о необходимости распечатать все прослушивающие сокеты, -t показывает все TCP-соединения, -u отображает все UDP-соединения, а -p включает печать имени приложения / программы, прослушивающего порт.

Чтобы печатать числовые значения, а не имена служб, добавьте флаг -n.

$ sudo netstat -lntup

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

$ sudo netstat -lntup | grep «nginx»

Кроме того, вы можете указать порт и найти привязанное к нему приложение, как показано.

$ sudo netstat -lntup | grep «: 80»

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

Команда ss — еще один полезный инструмент для отображения информации о сокетах. Результат похож на результат netstat. Следующая команда покажет все порты прослушивания для TCP а также UDP соединения в числовом значении.

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

Nmap — это мощный и популярный инструмент для исследования сети и сканер портов. Чтобы установить nmap в вашей системе, используйте менеджер пакетов по умолчанию, как показано.

$ sudo apt install nmap [в Debian / Ubuntu] $ sudo yum install nmap [в CentOS / RHEL] $ sudo dnf install nmap [в Fedora 22+]

Чтобы просканировать все открытые / прослушивающие порты в вашей системе Linux, выполните следующую команду (выполнение которой займет много времени).

$ sudo nmap -n -PN -sT -sU -p- локальный хост

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

Последний инструмент, который мы рассмотрим для запроса открытых портов, — это команда lsof, которая используется для вывода списка открытых файлов в Linux. Поскольку в Unix / Linux все является файлом, открытый файл может быть потоком или сетевым файлом.

Читайте также:  Что такое swapfile linux

Чтобы перечислить все файлы Интернета и сети, используйте параметр -i. Обратите внимание, что эта команда показывает сочетание имен служб и числовых портов.

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

Вот и все! В этой статье мы объяснили четыре способа проверки открытых портов в Linux. Мы также показали, как проверить, какие процессы привязаны к определенным портам. Вы можете поделиться своими мыслями или задать любые вопросы через форму обратной связи ниже.

Источник

Найти процесс по номеру порта в Linux

При работе в Unix-системах мне частенько приходится определять, какой процесс занимает порт, например, чтобы остановить его и запустить на нём другой процесс. Поэтому я решил написать эту небольшую статью, чтоб каждый, прочитавший её, мог узнать, каким процессом занят порт в Ubuntu, CentOS или другой ОС из семейства Linux.

Как же вычислить, какие запущенные процессы соотносятся с занятыми портами? Как определить, что за процесс открыл udp-порт 2222, tcp-порт 7777 и т.п.? Получить подобную информацию мы можем нижеперечисленными методами:

netstat утилита командной строки, показывающая сетевые подключения, таблицы маршрутизации и некоторую статистику сетевых интерфейсов; fuser утилита командной строки для идентификации процессов с помощью файлов или сокетов; lsof утилита командной строки, отображающая информацию об используемых процессами файлах и самих процессах в UNIX-системе; /proc/$pid/ в ОС Linux /proc для каждого запущенного процесса содержит директорию (включая процессы ядра) в /proc/$PID с информацией об этом процессе, в том числе и название процесса, открывшего порт.

Использование вышеперечисленных способов может потребовать права супер-пользователя.

Теперь давайте рассмотрим каждый из этих способов по отдельности.

Пример использования netstat

Введём в командную строку команду:

Получим примерно такой результат:

Из вывода видно, что 4942-й порт был открыт Java-приложением с PID’ом 3413. Проверить это можно через /proc :

Примерный результат выполнения команды:

При необходимости получения информации по конкретному порту (например, 80-му, используемого обычно для HTTP) вместо отображения всей таблицы можно grep -ануть результат:

Результат будет примерно такой:

Пример использования fuser

Для того, чтобы вычислить процесс, занимающий порт 5050, введём команду:

И получим результат:

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

Пример использования lsof

При использовании lsof введите команду по одному из шаблонов:

Пример реального использования:

После этого мы можем получить более полную информацию о процессах с PID’ами 2123, 2124 и т.д..

На выходе получим примерно следующее:

Получить информацию о процессе также можно следующим проверенным способом:

В этом выводе можно выделить следующие параметры:

  • 2727 — PID;
  • www-date — имя пользователя владельца;
  • www-date — название группы;
  • /usr/sbin/apache2 -k start — название команды с аргументами;
  • 14:27:33 — время работы процесса в формате [[дд-]чч:]мм:сс;
  • Mon Nov 30 21:21:28 2015 — время старта процесса.

Надеюсь, у меня получилось доступно объяснить, как определить процесс по порту в Linux-системах, и теперь у вас ни один порт не останется неопознанным!

Читайте также:  Rvi приложение для windows

Источник

Кто слушает порт в Linux

Открытый доступ к порту хоть и является угрозой безопасности системы, но по сути ничего плохого не представляет до тех пор, пока его не начинает использовать программа. А чтобы выяснить какая программа слушает какой порт можно использовать утилиты «netstat» (или «ss») и «lsof».

Чтобы узнать информацию о программе, которая прослушивает определённый порт, можно воспользоваться командой «lsof» со следующими ключами: Здесь «номер_порта» — это цифра.

Пример результата выполнения команды с 53 портом: Но рекомендуем чаще запускать команду для получения списка программ, которые используют какие-либо tcp/udp порты. В этом помогает «netstat» или «ss»: Опишем все ключи, которые используются в команде

  • -l показать только прослушиваемые «LISTEN» порты.
  • -n показывать адреса как ip, а не пытаться определять домены.
  • -t показывать TCP порты.
  • -u показывать UDP порты.
  • -p показать название программы, которая слушает порт.

Если запустить эту команду на веб сервере, то команда распечатает в терминале такую информацию (некоторые столбцы скрыты): По результату можно заметить какая программа прослушивает какой порт. Если ip в секции «Local Address» равен «127.0.0.1», то это локальное обращение. Такой порт можно не закрывать фаерволом — он и так не будет доступен извне. Но ip с нулями «0.0.0.0» говорят о том, что программа слушает все адреса. То есть она примет любой запрос, в том числе внешний.

Источник

Проверка занятости порта сервисом в Linux

Oct 4, 2018 06:09 · 637 words · 3 minute read lsof netstat fuser tips

Однажды вам обязательно понадобится проверить используемый порт определенного сервиса (или наоборот, найти сервисы, слушающие конкретный порт) — в Linux существует несколько утилит командной строки, которые могут с этим помочь. Давайте разберемся!

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

Устанавливается данная утилита в разных дистрибутивах по-разному, например, для RedHat и CentOS:

Для вывода детальной информации о всех TCP и UDP ендпоинтах можно воспользоваться следующей командой:

Вывод будет примерно следующим:

  • -p — вывод ID процесса и его имени;
  • -n — вывод адресов;
  • -l — вывод сокетов;
  • -t — вывод TCP соединений;
  • -u — вывод UDP соединений.

Найти сервис, запущенный на определенном порту можно так:

Аналогично можно найти на каком порту запущен определенный сервис:

Также для наших целей подойдет утилита командной строки fuser . По умолчанию она не установлена в большинстве операционных систем, чтобы установить ее в Centos/RedHat делаем так:

Например, чтобы найти идентификаторы процессов (PIDs), запущенных на 80-м порту, выполняем команду:

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

Далее можем найти имя процесса по его идентификатору (PID):

Еще один способ — использование утилиты lsof . Установка ее в RedHat/CentOS выглядит так:

Вывод всех активных TCP и UPD соединений:

Результатом будет примерно следующее:

Проверить использование конкретного порта можно так:

Напоследок можно также воспользоваться утилитой whatportis . Ее установка в RedHat/Centos требует чуть больше действий:

В Debian/Ubuntu все гораздо проще:

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

Если вам неизвестно точное имя сервиса, можно воспользоваться опцией —like , например:

Также доступен вывод информации в json-формате:

Источник

Оцените статью