Як вбити процес на порту на 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
На запитання FYI, Ubuntu є більше шансів на відповідь у частині Ubuntu мережі StackExchange (StackOverflow): askubuntu.com
JScoobyCed

Відповіді:


900

Ви хочете використовувати стандартний галочок:

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
Arayan Singh

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

17

Щоб вбити на сервісі порту в ubuntu, введіть команду нижче в термінал

У Терміналі:

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

Цей простий чудово справляється.
Три

15

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


15

просто введіть

    fuser -k -n tcp 3000

в терміналі, де 3000 - номер вашого порту


1
за допомогою fuser: Покажіть, які процеси використовують названі файли, сокети або файлові системи -k: Стенди для вбивства -n: Netstat tcp: Це протокол використання вашого порту 3000: Спеціальний порт тут - посилання: askubuntu.com/questions / 207609 / i-cant-kill-a-port-process
Kaushik shrimali

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 (id процесу) 3000 порту:

netstat -ltnp | grep -w '3000'

потім знайдіть pid, який слухає tcp

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

ви отримаєте pid 29972

Для вбивства цього піда використовуйте команду нижче

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. Процес вбивства цього id 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.