Что вы используете в качестве альтернативы «fuser -v -n tcp» в Mac OS X

10

Команда fuser в Mac OS X довольно примитивна и не может проверять процессы, прослушивающие определенный порт. Кто-нибудь знает хорошую альтернативу? Достаточно знать, какой процесс прослушивает этот один порт.

Мартин
источник
1
Попробуйтеsudo lsof -i -P
vcsjones
У меня сложилось впечатление, что lsof` работает только тогда, когда задача действительно подключается к порту. К тому | grep portnoже, чтобы получить значимый результат, нужно было бы хотя бы немного.
Мартин,

Ответы:

14

Как сказал @vcsjones в комментариях, lsofэто инструмент для этого:

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

Без -i, он показывает все открытые файлы; только с -iпоказывает только сетевые файлы; если вы указали что-то после, -iвы можете ограничить любое или все из: IPv4 / 6, TCP / UDP, имя хоста или IP и номер порта / имя службы.

Гордон Дэвиссон
источник
2
На всякий случай для кого-то вроде меня было бы полезно вслепую убить все процессы, используя данный порт: lsof -i tcp:5000 | grep LISTEN | awk '{print $2}' | xargs killубивает все процессы, прослушивающие порт 5000
JeremyKun