Как убить процесс на порту в Ubuntu


488

Я пытаюсь убить процесс в командной строке для определенного порта в Ubuntu.

Если я запускаю эту команду, я получаю порт:

sudo lsof -t -i:9001

итак ... теперь я хочу бежать

sudo kill 'sudo lsof -t -i:9001'

Я получаю это сообщение об ошибке:

ERROR: garbage process ID "lsof -t -i:9001".
Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.

Я попробовал , sudo kill 'lsof -t -i:9001'а также


9
К вашему сведению, на вопросы об Ubuntu больше шансов получить ответ в части Ubuntu сети StackExchange (StackOverflow): askubuntu.com
JScoobyCed

Ответы:


900

Вы хотите использовать backtick, а не обычный тик:

sudo kill -9 `sudo lsof -t -i:9001`

Если это не сработает, вы также можете использовать $()для интерполяции команд:

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

43
Вы забыли добавить опцию сигнала. Следует читать:sudo kill -9 $(sudo lsof -t -i:9001)
Франческо Грамано

7
@FrancescoGramano: вы не хотите использовать -9 без необходимости.
Зеллио

2
когда sudo killневозможно убить процесс, метод @ putra.koreng работает хорошо
Fangxin

3
если выше не работает, попробуйте это: stackoverflow.com/a/50515868/9339242
Арайан Сингх

1
Эта ОС независима или специфична для Linux? Если специфичен для Linux, то даже эта команда работаетos.system("fuser -k 8080/tcp");
Ridhuvarshan


78

ДЛЯ UBUNTU 1- Чтобы узнать, какое приложение / процесс использует профи, введите:

sudo netstat -lpn |grep :8080

и нажмите Enter.

Вы получите вывод, похожий на этот

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

2. У меня есть идентификатор процесса, который равен 6782, теперь этот процесс использует порт 8080.

3- Убить процесс, набрать: убить 6782

kill 6782

3
Короткий и четкий ответ
Викас Кукрети

1
Работал отлично
Тайлер Белл

Не могли бы вы написать, как вы используете вышеуказанную команду?
Мохит Сингх

1
Работал просто отлично, в то время как команды в asnwers с большим количеством голосов не были найдены на моем сервере Ubuntu 18.04. Спасибо!
Саливан


35

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

Есть sudo netstat -lpn |grep :8080. Процесс, запущенный системой, не показывает PID, чтобы получить PID этого процесса, вам нужно запустить его, используяsudo

А затем завершите процесс, используя порт 8080. Возможно, вам придется использовать и sudoздесь. Так что чтобы убить этот процесс используйтеsudo kill -9 PID


19

Используйте команду killport :

sh killport 9001 

Чтобы скачать оболочку, вы можете использовать wget:

wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport

1
если это не работает, это означает, что целевой порт уже закрыт
Abdennour TOUMI

18

Чтобы убить службу порта в Ubuntu, введите приведенную ниже команду в терминале

В терминале:

sudo fuser -k port/tcp
sudo fuser -k 8001/tcp

Этот простой делает отлично.
Tri

15

Для этого вы также можете использовать fuser (по умолчанию отправляет SIGKILL): sudo fuser -k 9001/tcp


15

просто введите

    fuser -k -n tcp 3000

в терминале, где 3000 номер вашего порта


1
using fuser: Показать, какие процессы используют именованные файлы, сокеты или файловые системы. -k: Обозначает kill -n: Netstat tcp: Это протокол для использования вашего порта. 3000: Пользовательский порт, вот ссылка: askubuntu.com/questions / 207609 / i-cant-kill-a-port-process
Каушик Шримали,

12

Чтобы убить процесс, работающий на номер порта9001

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


lsof   - list of files(Also used for to list related processes)

-t     - show only process ID

-i     - show only internet connections related process

:9001  - show only processes in this port number

kill   - command to kill the process

-9     - forcefully

sudo   - command to ask admin privilege(user id and password).

Более подробно вы можете посетить мой блог


11

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

В моем случае я хотел получить pid (идентификатор процесса) порта 3000:

netstat -ltnp | grep -w '3000'

тогда найди pid который слушает tcp

tcp6       0      0 :::3000                 :::*                    LISTEN      29972/node  

вы получите пид 29972

Чтобы убить этот pid, используйте команду ниже

kill -9 29972

псевдокод для процесса уничтожения на основе порта

 netstat -ltnp | grep -w 'PORT'

а также

kill -9 PID


5

Убить порт:

sudo важно показать идентификатор процесса.

$ sudo netstat -antlp | grep 45136
tcp      0      0 0.0.0.0:45136         0.0.0.0:*        LISTEN           **-** 

$ kill -9 45136

5

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

 netstat -plten |grep java

использовал grep java, так как tomcat использует java в качестве своих процессов.

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

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

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

kill -9 16085

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



3

Используйте это для процесса уничтожения, который выполняется на порту номер "9001"

 kill $(lsof -t -i:9001)

Избыточный с другими примерами, включая принятый ответ.
Кенстер



1

Его два шага процесса:

  1. Знать идентификатор процесса на порту нет. 8080 (может быть любым)
  2. Убить процесс с этим идентификатором 8689 (может быть другим)

    fuser -n tcp 8080
    
    #o/p 8080/tcp    8689
    
    kill -9 8689
    


1

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

netstat -tupln

Он перечислит вам все соединения по pid. Найдите и скопируйте pid и выполните следующую команду. Убедитесь, что вы заменили фактический идентификатор в следующей команде.

kill -9 <copied pid>

-9 использовать для принудительного разрыва соединения.


1

Попробуйте sudo fuser PORT/tcp -k заменить PORTна порт, который вы хотите убить, например80


0

убить -9 $ (lsof -t -i: 9001)

может быть использован, чтобы убить процесс. Вы можете использовать любой номер порта вместо 9001


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.