Jak znaleźć (i zabić) proces działający na określonym porcie? [duplikować]


Odpowiedzi:


47

Możesz użyć, lsofaby znaleźć proces:

lsof -t -i:4444

wyświetli tylko pid procesu nasłuchującego na porcie 4444. Można po prostu powiedzieć

kill `lsof -t -i:4444`

gdybyś był odważny.


14
+1 za „gdybyś był odważny”.
Pan Shickadance,

7

Używasz lsof:

# lsof -n | grep TCP | grep LISTEN | grep 4444

Wynik będzie taki jak:

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

Gdzie pierwsza kolumna to nazwa procesu, a druga kolumna to identyfikator procesu. Następnie analizujesz dane wyjściowe, dowiadujesz się, jaki jest identyfikator procesu (PID) i używasz killpolecenia, aby je zabić.


1
Nigdy wcześniej nie słyszałem o lsof. Patrząc na stronę podręcznika, wydaje się niezwykle przydatna. Dzięki!

wszystko w Linuksie jest plikiem, a lsof pozwala znaleźć pliki, więc ... tak, bardzo przydatne
jcollum

2

Alternatywnie możesz użyć, netstat -apjeśli lsofnie jest dostępny w twoim systemie (ponieważ nie ma go w systemie busybox, z którym regularnie pracuję).


dobra rozmowa, zastanawiałem się, dlaczego to nie działa na obrazie
dokera

2
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`

Używa netstat do listy nasłuchujących gniazd INET z portami numerycznymi i procesami nadrzędnymi. Filtruje ciąg 4444, usuwa siódmą kolumnę (pid / nazwa procesu) i dalej dzieli ją na „/”, aby uzyskać pid. Przechodzi polecenie zabicia.


2
Poleciłbym przeciwko zabiciu -9. Nie pozwala na czyszczenie, a niektóre aplikacje internetowe mają większe zasoby, które muszą zostać całkowicie zamknięte.
Rich Homolka,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.