Как убить процесс на порту в 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'а также

Tampa
источник
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)
zellio
источник
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. Спасибо!
Саливан
38

Лучший способ убить порт в терминале Ubuntu - это fuser -k 9001/tcp

Вишну С Бабу
источник
3
Работал безупречно для меня
Встречайте Завери
У меня это тоже сработало. Это должен быть принятый ответ.
CodeSlave
35

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

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

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

User16119012
источник
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
Абхишек-Saini
источник
Этот простой делает отлично.
Tri
15

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

Dmitriusan
источник
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
Пракаш Нагарадж
источник
8

Использовать этот:

sudo kill -9 $(lsof -t -i:9001)
Delpha
источник
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 подразумевает, что процесс будет убит принудительно.

kumbhanibhavesh
источник
4

sudo fuser -n tcp -k [номер_порта]

sudo lsof -t -i: [номер_порта]

Джавад
источник
3

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

 kill $(lsof -t -i:9001)
Эрвинд
источник
Избыточный с другими примерами, включая принятый ответ.
Кенстер
3

Попробуй это:

lsof -i :port

or 

sudo kill $(sudo lsof -t -i:8000)

or

kill -9 <pid>

or 

sh killport 8000
Ранвиджай Сачан
источник
Я на Ubuntu 17 и kill -9 <pid>отлично работал для меня!
protoEvangelion
1
sudo kill `sudo lsof -t -i:9001`

вам не нужно добавлять -9опцию сигнала

davidblumer
источник
1

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

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

    fuser -n tcp 8080
    
    #o/p 8080/tcp    8689
    
    kill -9 8689
    
Ратнеш Кушваха
источник
1

вы можете работать с помощью узла

npm install freethenport -g

тогда

node freethenport 9001
Адехо Эммануэль IMM
источник
1

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

netstat -tupln

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

kill -9 <copied pid>

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

Лалит Мохан
источник
1

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

Armin
источник
0

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

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

Чарука Герат
источник
-1

sudo kill $ (sudo lsof -t -i: 1337)

Альберт Дэвис
источник