Перед подключением к порту или отладкой вы должны знать, какие порты работают и какой процесс выполняется на этом порту. Иногда у вас также могут быть проблемы, такие как “port already in use”, и при необходимости вы должны знать, какой процесс использует этот порт, и при необходимости завершить его. Этого можно достичь, зная, какие порты используют разные процессы. Мы рассмотрим некоторые подходы к завершению работы в этом посте. Однако сначала давайте разберемся с некоторыми техническими словами, используемыми в этой статье.
Что такое порты?
Порты – это абстракция, которая может обмениваться данными между приложениями с использованием различных протоколов. Для протоколов транспортного уровня, таких как TCP, UDP и SMTP, используются порты. Различным службам назначается номер порта, например порт 80, используемый HTTP, порт 22, используемый SSH, и т. д. Использование номеров портов позволяет нескольким системам открывать множество сокетов через один и тот же транспортный протокол.
В приложении используются несколько портов и динамические порты 49152-65535. Первые 1024 порта (00-1023) – это системные порты, которые запрещают пользовательским программам вмешиваться в их работу, поскольку многие операционные системы резервируют эти порты для привилегированных функций.
Порты могут принимать и доставлять данные и находятся выше транспортного уровня модели OSI.
Что такое процессы?
По сути, процесс – это динамический экземпляр программы, который выполняется последовательно. Сущность, представляющая основную единицу работы, которая должна быть реализована в системе, указывается как процесс. Проще говоря, мы создаем наши компьютерные программы в текстовом файле, и он становится процессом, который выполняет все обязанности, указанные в программе, когда мы выполняем эту программу.
Давайте теперь посмотрим на методы проверки портов и процессов, запущенных в Ubuntu.
Метод 1. Использование команды netstat и grep
netstat
Команда netstat отображает состояние сети и статистику протокола. В зависимости от используемого параметра командной строки netstat показывает разные типы сетевых данных. Конечные точки TCP и UDP можно увидеть в таблицах, таблицах маршрутизации и форматах информации об интерфейсах.
grep
Grep анализирует файл и отображает каждую строку, которая содержит этот шаблон для определенного шаблона символов. Шаблон, который ищется в файле, называется регулярным выражением.
Используйте следующую команду, чтобы проверить, какой процесс запущен на порту. Вы должны указать порт в этой команде.
$ netstat -ltnp | grep -w ': 80'
Метод 2: список всех прослушивающих портов с помощью netstat
Используйте следующую команду для вывода списка всех прослушивающих портов TCP или UDP, включая те, которые используют порты и состояние сокета.
sudo netstat -tunlp
Метод 3: Использование команды ss
Команда ss – это утилита, используемая для дампа статистического сокета и отображения информации аналогично netstat. Кроме того, отображается TCP и информация о состоянии, чем в большинстве других инструментов. Это также немного быстрее, чем netstat.
Заключение
Мы видели различные команды, чтобы узнать, какие порты использует ваша система и как работать с определенным портом. Эти команды могут быть особенно полезны при оптимизации производительности системы и в различных задачах отладки. Например, если вы хотите запустить веб-приложение на порту 8000, но этот порт уже занят, вы можете найти процесс, запущенный на этом порту, и при необходимости завершить его. Мы обсудили три метода проверки портов и процессов, работающих в Ubuntu, которые наилучшим образом соответствуют вашим потребностям.