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


Вы когда-нибудь сталкивались с ситуацией, когда вам нужно остановить процесс, работающий на определенном порту на вашем компьютере с Linux?

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

Какова бы ни была причина, вы можете использовать команды fuser, lsofи netstatиз терминала (вместе с kill), чтобы помочь вам найти и завершить любой процесс Linux по номеру порта. Эти команды будут работать в большинстве операционных систем Linux, включая Ubuntu.

Как завершить процесс Linux с помощью команды Fuser

Один из самых простых способов завершить процесс с помощью номера порта — использовать команду fuser. Этот Команда терминала Linux может отображать или уничтожать процессы, обращающиеся к файлам или сокетам. Если приложение работает с сетевой активностью (и, следовательно, использует открытый порт), оно, вероятно, выполняет одно из этих двух действий.

Прежде чем продолжить, вам необходимо убедиться, что вам удобно использовать терминал командной строки на вашем ПК с Linux.

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

порт протокола fuser -n

В этом примере протоколможет быть tcpили udp, а port— это номер порта, который вы хотите Проверять. Например, чтобы узнать, какие процессы используют TCP-порт 80, вы можете запустить:

фьюзер -n tcp 80

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

Чтобы завершить эти процессы, вы можете добавить опцию -kк fuser. Это отправит сигнал SIGTERM каждому процессу с просьбой корректно завершить работу. Например:

fuser -k -n tcp 80

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

Если некоторые процессы не отвечают на SIGTERM, вы можете использовать -KILLвместо -k. Это отправит сигнал уничтожения (SIGKILL), который может помочь немедленно завершить запущенные в данный момент процессы, которые вы определили. Однако это может привести к потере или повреждению данных, поэтому используйте его осторожно. Например:.

fuser -KILL -n tcp 80

Это приведет к принудительному завершению всех процессов, использующих TCP-порт 80. Если у вас возникнут какие-либо проблемы, запустите эти команды от имени суперпользователя (с помощью команды sudo) или вместо этого используйте пользователя root.

Как завершить процесс Linux с помощью команды lsof

Другой способ завершить процесс с использованием номера порта на ПК с Linux — использовать команду lsof. Эта команда может вывести список открытых файлов и сокетов в вашей системе.

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

lsof -i протокол:порт

Как и раньше, protocolможет быть tcpили udp, а port— это номер порта, который вы хотите проверять. Например, чтобы узнать, какие процессы используют TCP-порт 53 (обычно используется для DNS-запросов), вы можете запустить следующую команду:

lsof -i TCP:53

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

Чтобы завершить эти процессы, вы можете использовать опцию -tс lsof. При этом будут распечатаны только PID процессов без какой-либо другой информации. Затем вы можете передать этот вывод команде killс любой опцией сигнала. Например:

kill $(lsof -t -i tcp:53)

При этом сигналы SIGTERM (по умолчанию) будут отправлены всем процессам, использующим TCP-порт 53.

Если некоторые процессы не отвечают на сигналы SIGTERM, как раньше, вы можете использовать -9вместо ничего после kill. Это приведет к отправке сигналов SIGKILL, как и раньше, что приведет к их немедленному завершению, но также может привести к потере или повреждению данных. Например:

kill -9 $(lsof -t -i tcp:53)

Это принудительно отправит сигналы SIGKILL (по умолчанию) всем процессам, использующим TCP-порт 53.

Как завершить процесс Linux с помощью команды netstat

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

Чтобы вывести список процессов с использованием номера порта и их PID, вам необходимо добавить два параметра: -p, который показывает PID, и -l, который показывает только розетки для прослушивания..

Также необходимо указать протокол (tcp, udp и т. д.) и при необходимости фильтровать по состоянию (LISTEN и т. д.). Например, чтобы увидеть, какие процессы TCP прослушивают те или иные порты, вы можете запустить:

netstat -p tcp -l

При этом будет выведена информация о каждом TCP-сокете, прослушивающем любые порты, включая его PID.

Чтобы фильтровать по определенным портам, необходимо добавить еще один параметр: -n, который отображает числовые адреса вместо имен. Вам также необходимо указать точный формат адреса: [протокол][@hostname|hostaddr][:service|port].

Например, чтобы узнать, какие процессы TCP прослушивают порт 80, вы можете запустить:

netstat -p tcp -l -n 80

При этом будет выведена информация о каждом TCP-сокете, прослушивающем порт 8080, включая его PID.

Чтобы завершить эти процессы, вы можете использовать команду killс любым параметром сигнала и PID, полученными из netstat. Например:

убить 1234 5678

При этом сигналы SIGTERM (по умолчанию) будут отправлены процессам с PID 1234и 5678.

Если некоторые процессы не отвечают на сигналы SIGTERM, как раньше, вы можете использовать -9вместо ничего после kill. Это приведет к отправке сигналов SIGKILL, как и раньше, заставляя их немедленно прекратить работу, но может привести к потере или повреждению данных, как и раньше. Например:

убить -9 1234 5678

Например, это принудительно отправит сигналы SIGKILL процессам с PID 1234и 5678. Замените 1234на правильный PID для вашего текущего процесса.

Управляйте своими приложениями Linux

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

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

Нужно перейти на новый дистрибутив Linux? Если вы новичок, рассмотрите Linux Mint это безопасная и стабильная альтернатива..

.

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


2.04.2023