Во время разработки периодически возникают ситуации, когда вы запустили, например, NodeJs сервер и в какой-то момент произошла ошибка. Вы прерываете процесс через Ctrl+C , запускаете сервер заново, но в ответ видите ошибку Error: listen EADDRINUSE: address already in use . 3000 . Самое неприятное с этой ошибкой то, что вы вроде бы остановили процесс, однако несмотря на это, процесс так и не освободил порт и все еще крутится где-то в памяти. В этом посте речь пойдет о том, как отловить такие процессы и все же убить их.
Чтобы убить процесс в linux, вам необходимо использовать команду kill с сигналом 9 (SIGKILL):
kill -9 PID>
Чтобы получить process id (PID), нужно выполнить другую команду. При чем в конкретно нашей ситуации, нам нужно найти процесс по номеру порта, который он занял. Разновидностей команд для решения такой задачи есть довольно много и далеко не все из этих программ будут установлены в системе, с которой вам придется работать.
Потому далее предлагаю несколько альтернативных команд, чтобы было из чего выбирать. Начну с той, которую обычно использую сам.
Работа с COM-портом (RS-232) в Linux
Обратите внимание, если процесс был запущен на порту :80 или если он был запущен другим юзером, скорее всего вам понадобится добавить sudo , чтобы выполнить команду с правами администратора, иначе со своего юзера вы либо не сможете увидеть процессы, либо не увидите их PID.
Чтобы проверить какой процесс слушает на порту 3000 , необходимо ввести следующую команду:
lsof -i :3000
Расшифровку ключей можно посмотреть здесь
В ответ получите нечто на подобии этого:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 241907 sleepwalker 38u IPv6 3609283 0t0 TCP *:3000 (LISTEN)
Можно так же передать флаг -t , чтобы получить только pid. Это дает возможность убить нужный процесс в одну строку:
kill -9 $(lsof -t -i:3000)
Источник: udf.su
Проверка занят ли порт на Linux или Unix
Как определить используется порт на Linux или Unix-подобной системах.Как я могу проверить, какие порты прослушиваются на сервере Linux?
Важно, знать, какие порты находятся в официальном списке сетевых интерфейсов сервера. Вам нужно обратить внимание, при открытии портов из-за возможных попыток взлома. Помимо вторжения, для устранения неполадок, может потребоваться, проверить, порт уже используется другим приложением на ваших серверах. Например, вы можете установить сервер Apache и Nginx на той же системе.
Поэтому необходимо знать, если Apache или Nginx использует TCP порт # 80/443. Это краткое руководство содержит шаги, как использовать NetStat, Nmap и LSOF команды, чтобы проверить порты в использовании и просмотреть приложение, которое использует порт.
Как проверить порты прослушивания и приложений на Linux:
- Откройте приложение терминала т.е. приглашение оболочки.
- Выполните любое из следующих команд:
Ubuntu. Как проверить открытые порты? NMAP
Источник: system-admins.ru
Проверьте, какие порты и процессы запущены в Ubuntu
Добавить в избранное
Главное меню » Проверьте, какие порты и процессы запущены в Ubuntu
21 августа 2021
П еред подключением к порту или отладкой вы должны знать, какие порты работают и какой процесс выполняется на этом порту. Иногда у вас также могут быть проблемы, такие как “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 можно увидеть в таблицах, таблицах маршрутизации и форматах информации об интерфейсах.
Читать Как заблокировать или разблокировать запросы ping на Ubuntu Server 20.04 LTS
grep
Grep анализирует файл и отображает каждую строку, которая содержит этот шаблон для определенного шаблона символов. Шаблон, который ищется в файле, называется регулярным выражением.
Используйте следующую команду, чтобы проверить, какой процесс запущен на порту. Вы должны указать порт в этой команде.
$ netstat -ltnp | grep -w ‘: 80’
Метод 2: список всех прослушивающих портов с помощью netstat
Используйте следующую команду для вывода списка всех прослушивающих портов TCP или UDP, включая те, которые используют порты и состояние сокета.
sudo netstat -tunlp
Метод 3: Использование команды ss
Команда ss — это утилита, используемая для дампа статистического сокета и отображения информации аналогично netstat. Кроме того, отображается TCP и информация о состоянии, чем в большинстве других инструментов. Это также немного быстрее, чем netstat.