Czego używać jako alternatywy „fuser -v -n tcp” w systemie Mac OS X

10

Komenda fuser w systemie Mac OS X jest dość prymitywna i nie może sprawdzić procesów nasłuchujących na określonym porcie. Czy ktoś zna dobrą alternatywę? Wystarczy wiedzieć, który proces nasłuchuje na tym jednym porcie.

Jaskółka oknówka
źródło
1
Spróbujsudo lsof -i -P
vcsjones,
Miałem wrażenie, że lsof` działa tylko wtedy, gdy zadanie faktycznie łączy się z portem. Poza tym trzeba by co najmniej jednego, | grep portnoaby uzyskać znaczący wynik.
Martin

Odpowiedzi:

14

Jak powiedział @vcsjones w komentarzach, lsofjest to narzędzie:

$ sudo lsof -i tcp:80
COMMAND PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
Safari  804 gordon   16u  IPv4 0x05a2cec8      0t0  TCP 192.168.6.3:50542->stackoverflow.com:http (ESTABLISHED)
httpd   874   root    3u  IPv6 0x05a2a940      0t0  TCP *:http (LISTEN)
httpd   878   _www    3u  IPv6 0x05a2a940      0t0  TCP *:http (LISTEN)

Bez -itego pokazuje wszystkie otwarte pliki; po prostu -ipokazuje tylko pliki sieciowe; jeśli określisz coś po -i, możesz ograniczyć dowolne z poniższych elementów: IPv4 / 6, TCP / UDP, nazwę hosta lub IP oraz numer portu / nazwę usługi.

Gordon Davisson
źródło
2
Na wszelki wypadek przydatne dla kogoś takiego jak ja, który chce ślepo zabić wszystkie procesy za pomocą danego portu: lsof -i tcp:5000 | grep LISTEN | awk '{print $2}' | xargs killzabija wszystkie procesy nasłuchujące na porcie 5000
JeremyKun