Możliwa duplikat:
Znalezienie procesu korzystającego z określonego portu w systemie Linux
Używam Ubuntu Linux 11.04. Jak napisać wyrażenie skryptu powłoki, które znajdzie proces działający na porcie 4444, a następnie zabije proces?
Możliwa duplikat:
Znalezienie procesu korzystającego z określonego portu w systemie Linux
Używam Ubuntu Linux 11.04. Jak napisać wyrażenie skryptu powłoki, które znajdzie proces działający na porcie 4444, a następnie zabije proces?
Odpowiedzi:
Możesz użyć, lsof
aby 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.
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 kill
polecenia, aby je zabić.
Alternatywnie możesz użyć, netstat -ap
jeśli lsof
nie jest dostępny w twoim systemie (ponieważ nie ma go w systemie busybox, z którym regularnie pracuję).
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.