Jak zabić proces na porcie na Ubuntu

488

Próbuję zabić proces w wierszu polecenia dla określonego portu w Ubuntu.

Jeśli uruchomię to polecenie, otrzymam port:

sudo lsof -t -i:9001

więc ... teraz chcę uruchomić:

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

Otrzymuję ten komunikat o błędzie:

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.

Próbowałem sudo kill 'lsof -t -i:9001'też

Tampa
źródło
9
Do Twojej wiadomości, pytania dotyczące Ubuntu mają większą szansę na udzielenie odpowiedzi w części Ubuntu sieci StackExchange (StackOverflow): askubuntu.com
JScoobyCed

Odpowiedzi:

900

Chcesz użyć nieregularnego tyknięcia:

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

Jeśli to nie zadziała, możesz również użyć $()do interpolacji poleceń:

sudo kill -9 $(sudo lsof -t -i:9001)
zellio
źródło
43
Zapomniałeś dodać opcję sygnału. Treść powinna brzmieć:sudo kill -9 $(sudo lsof -t -i:9001)
Francesco Gramano
7
@FrancescoGramano: nie chcesz używać -9, chyba że musisz.
zellio
2
kiedy sudo killnie można zabić procesu, metoda @ putra.koreng działa dobrze
Fangxin
3
jeśli powyższe nie działa, spróbuj tego: stackoverflow.com/a/50515868/9339242
Arayan Singh
1
Czy ten system operacyjny jest niezależny czy specyficzny dla systemu Linux? Jeśli jest to specyficzne dla Linuksa, nawet to polecenie działaos.system("fuser -k 8080/tcp");
Ridhuvarshan
78

DLA UBUNTU 1- Znajdź aplikację / proces korzystający z pro, wpisz:

sudo netstat -lpn |grep :8080

i naciśnij Enter.

Otrzymasz wyjście podobne do tego

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

2- Mam identyfikator procesu, który wynosi 6782, teraz jest to proces korzystający z portu 8080.

3- Zabij proces, wpisz: kill 6782

kill 6782
Mohit Singh
źródło
3
Krótka i
ostra
1
Działa idealnie
Tyler Bell
Czy możesz napisać, jak używasz powyższego polecenia?
Mohit Singh
1
Działa świetnie, podczas gdy na moim serwerze Ubuntu 18.04 nie znaleziono poleceń w odpowiedziach z większą liczbą głosów pozytywnych. Dzięki!
Salivan
38

Najlepszym sposobem na zabicie portu w terminalu Ubuntu jest fuser -k 9001/tcp

Wisznu S. Babu
źródło
3
Pracował dla mnie bezbłędnie
Poznaj Zaveri
Dla mnie też zadziałało. To powinna być zaakceptowana odpowiedź.
CodeSlave,
35

Istnieje pewien proces, który nie jest wyświetlany przy użyciu normalnej komendy netstat, więc musisz to sprawdzić za pomocą sudo.

Zrobić sudo netstat -lpn |grep :8080. Proces uruchamiany przez system nie wyświetla PID, aby uzyskać PID tego procesu, musisz go uruchomićsudo

A następnie zabij proces za pomocą portu 8080. Być może będziesz musiał użyć sudotutaj. Aby zabić ten proces, użyjsudo kill -9 PID

Użytkownik16119012
źródło
19

Użyj polecenia killport :

sh killport 9001 

Aby pobrać powłokę, możesz użyć wget:

wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport
Abdennour TOUMI
źródło
1
jeśli to nie działa, oznacza to, że port docelowy jest już zamknięty
Abdennour TOUMI
17

Aby zabić w usłudze portowej w Ubuntu, wprowadź poniższe polecenie w terminalu

W terminalu:

sudo fuser -k port/tcp
sudo fuser -k 8001/tcp
Abhishek-Saini
źródło
Ten prosty świetnie sobie radzi.
Tri
15

Możesz również użyć do tego utrwalacza (domyślnie wysyła SIGKILL): sudo fuser -k 9001/tcp

Dmitriusan
źródło
15

po prostu wejdź

    fuser -k -n tcp 3000

w terminalu, gdzie 3000 to numer twojego portu

Sai Kumar
źródło
1
using fuser: Pokaż, które procesy używają nazwanych plików, gniazd lub systemów plików -k: oznacza zabójstwo -n: Netstat tcp: jest to protokół używający twojego portu 3000: niestandardowy port tutaj jest link: askubuntu.com/questions / 207609 / i-cant-kill-a-port-process
Kaushik shrimali
12

Aby zabić proces działający na numerze portu9001

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).

po więcej możesz odwiedzić mojego bloga

Arayan Singh
źródło
11

Aby najpierw zabić proces oparty na porcie, musimy znaleźć odpowiedni pid dla danego portu i zabić go za pomocą tego pid,

W moim przypadku chciałem uzyskać pid (identyfikator procesu) portu 3000:

netstat -ltnp | grep -w '3000'

następnie znajdź pid, który słucha tcp

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

dostaniesz pid 29972

Aby zabić ten pid, użyj poniższego polecenia

kill -9 29972

pseudo kod dla procesu zabicia na podstawie portu

 netstat -ltnp | grep -w 'PORT'

i

kill -9 PID
Prakash Nagaraj
źródło
8

Użyj tego:

sudo kill -9 $(lsof -t -i:9001)
delpha
źródło
5

Zabij PORT:

sudo ważne jest, aby pokazać identyfikator procesu.

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

$ kill -9 45136
Guna Sekaran
źródło
5

Użyj polecenia

 netstat -plten |grep java

używany grep java jako tomcat używa java jako swoich procesów.

Wyświetli listę procesów z numerem portu i identyfikatorem procesu

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

liczba przed / java jest identyfikatorem procesu. Teraz użyj polecenia kill, aby zabić proces

kill -9 16085

-9 oznacza, że ​​proces zostanie zabity siłą.

kumbhanibhavesh
źródło
4

sudo fuser -n tcp -k [numer_portu]

sudo lsof -t -i: [numer_portu]

Javad
źródło
3

Użyj tego do zabijania procesu, który działa na porcie o numerze „9001”

 kill $(lsof -t -i:9001)
arvind
źródło
Zbędne w przypadku innych przykładów, w tym zaakceptowanej odpowiedzi.
Kenster
3

Spróbuj tego:

lsof -i :port

or 

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

or

kill -9 <pid>

or 

sh killport 8000
Ranvijay Sachan
źródło
Jestem na Ubuntu 17 i kill -9 <pid>działał świetnie dla mnie!
protoEvangelion,
1
sudo kill `sudo lsof -t -i:9001`

nie musisz dodawać -9opcji sygnału

davidblumer
źródło
1

Proces składa się z dwóch etapów:

  1. Poznaj identyfikator procesu na porcie nr. 8080 (może być dowolny)
  2. Zabij proces o tym identyfikatorze 8689 (może być inny)

    fuser -n tcp 8080
    
    #o/p 8080/tcp    8689
    
    kill -9 8689
    
Ratnesh Kushwaha
źródło
1

możesz pracować z tym za pomocą węzła

npm install freethenport -g

następnie

node freethenport 9001
Adeojo Emmanuel IMM
źródło
1

Wyświetla aktywne połączenia TCP, porty, na których komputer nasłuchuje.

netstat -tupln

To wyświetli listę wszystkich połączeń wzdłuż pid. Znajdź i skopiuj pid i uruchom następujące polecenie. Upewnij się, że zastąpiłeś rzeczywisty identyfikator w następującym poleceniu.

kill -9 <copied pid>

-9 Użyj, aby wymusić zabicie połączenia.

Lalit Mohan
źródło
1

Spróbuj na przykład sudo fuser PORT/tcp -k zastąpić PORTportem, który chcesz zabić80

Armin
źródło
0

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

może być użyty do zabicia procesu. Możesz użyć dowolnego numeru portu zamiast 9001

Charuka Herath
źródło
-1

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

Albert Davies
źródło