Как убить процесс, работающий на определенном порту в Linux?

Я попытался закрыть tomcat, используя ./shutdown.sh от tomcat

16 ответов


этой fuser 8080/tcp напечатает вам PID процесса, связанного с этим портом.

и fuser -k 8080/tcp убьет этот процесс.

работает только на Linux. Более универсальным является использование lsof -i4 (или 6 для IPv6).


чтобы перечислить любой процесс, прослушивающий порт 8080:

lsof -i:8080

чтобы убить любой процесс прослушивания порта 8080:

kill $(lsof -t -i:8080)

или более яростно:

kill -9 $(lsof -t -i:8080)

(-9 соответствует SIGKILL - terminate immediately/hard kill сигнал: Вижу список сигналов уничтожения и какова цель опции -9 в команде kill?. Если сигнал не указан в kill, термин сигнал a.к. a. -15 или soft kill отправляется, чего иногда недостаточно убить процесс.).


используйте команду

 sudo netstat -plten |grep java

используется grep java as tomcat использует java как их процессы.

он покажет список процессов с номером порта и идентификатором процесса

tcp6       0      0 :::8080                 :::*                    LISTEN      
1000       30070621    16085/java

число перед /java - это идентификатор процесса. Теперь используйте kill команда, чтобы убить процесс

kill -9 16085

-9 подразумевает, что процесс будет насильственно убит.


вы можете использовать команду lsof. Пусть номер порта, как здесь 8090

lsof -i:8090

эта команда возвращает список открытых процессов на этот порт.

что-то вроде...

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)

чтобы освободить порт, убейте процесс, используя его (идентификатор процесса 75782)...

kill -9 75782

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


Я бы добавил этот One-liner только для прослушивания определенного порта:

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)


Если вы хотите убить процесс, работающий на port number 8080, то сначала вам нужно найти 8080 port process identification number(PID), а затем убить его. Выполните следующую команду, чтобы найти 8080 номер порта PID:

sudo lsof -t -i:8080

здесь

  • судо - команда для запроса прав администратора (id пользователя и пароль).
  • lsof - список файлов(также используется для связанного списка процессов)
  • - t - показать только ID процесса
  • - показать только интернет-соединения, связанные с процессом
  • :8080 - показывать только процессы в этом номере порта

Теперь вы можете легко убить свой PID, используя следующую команду:

sudo kill -9 <PID>

здесь

  • kill-команда, чтобы убить процесс
  • -9 - сильно

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

sudo kill -9 $(sudo lsof -t -i:8080)

Для больше вы можете увидеть следующую ссылку как убить процесс на определенном порту в linux


это печатает для stdout идентификаторы процессов всего, что работает на <port_number>:

fuser -n tcp <port_number> 

он также печатает некоторые вещи в stderr, так:

fuser -n tcp <port_number> 2> /dev/null

затем мы можем предоставить эти идентификаторы процессов в kill команда:

sudo kill $(fuser -n tcp <port_number> 2> /dev/null)

вы также можете поместить это в функцию, если вы делаете это много:

function killport() {
    sudo kill $(fuser -n tcp  2> /dev/null)
}

чтобы узнать pid службы, работающей на определенном порту:

netstat -tulnap | grep :*port_num*

вы получите описание этого процесса. Теперь используйте kill или kill -9 pid. Легко убил.

Эл.г

netstat -ap | grep :8080

tcp6       0      0 :::8080       :::*    LISTEN      1880/java 

теперь:

kill -9 1880

не забудьте выполнить все команды как root


попробуйте вот так,

 sudo fuser -n tcp -k 8080

  1. lsof -i tcp:8000 Эта команда содержит сведения о процессе, запущенном в порту 8000

  2. kill -9 [PID] Эта команда убивает процесс


Linux: вы можете использовать эту команду, если вы знаете порт :

netstat -plten | grep LISTEN | grep 8080

экс:

netstat -Aan | grep LISTEN | grep 8080

затем вы берете первый столбец (пример: f100050000b05bb8) и выполняете следующую команду:

rmsock f100050000b05bb8 tcpcb

процесс убить.


Linux: сначала вы можете найти PID этой команды, если знаете порт:

netstat -tulpn 

пример:

 Local Address  Foreign Address  State    PID/Program name

  :::3000       :::*             LISTEN    15986/node 

затем вы берете процесс убийства. выполните следующую команду:

убить -9 PID

Expample: -

убить -9 15986


kill -9 `fuser 8080/tcp|xargs -n 1`, эта команда также убивает процесс, который прослушивает порт 8080 с TCP-соединением


строить на чем @veer7 сказал:

Если вы хотите знать, что было на порту, сделайте это, прежде чем убить его.

$ sudo netstat -plten |grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1000       906726      25296/java      
tcp6       0      0 :::8009                 :::*                    LISTEN      1000       907503      25296/java      
tcp6       0      0 :::8080                 :::*                    LISTEN      1000       907499      25296/java      
$ ps 25296
  PID TTY      STAT   TIME COMMAND
25296 ?        Sl     0:16 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dcatalina.base=/hom

используйте "ps" и номер процесса, о котором netstat сообщил


sudo apt-get install psmisc (or sudo yum install psmisc)
sudo fuser 80/tcp

результат: 80 / tcp: 1858 1867 1868 1869 1871

убить процесс один за другим

убить -9 1858


В Windows, это будет netstat -ano | grep "8080" и мы получаем следующее

мы можем убить PID, используя taskkill /F /PID 10076