O que você usa como uma alternativa "fuser -v -n tcp" no Mac OS X

10

O comando do fusor no Mac OS X é bastante primitivo e não pode verificar se há processos escutando em uma porta específica. Alguém sabe uma boa alternativa? É o suficiente para saber qual processo escutando nessa porta.

Martin
fonte
1
Experimentar sudo lsof -i -P
vcsjones
Fiquei com a impressão de que o lsof` só funciona quando uma tarefa realmente se conecta à porta. Além disso, seria necessário pelo menos um | grep portno também para obter um resultado significativo.
Martin

Respostas:

13

Como disse o @vcsjones nos comentários, lsof é a ferramenta para isso:

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

Sem o -i, mostra todos os arquivos abertos; com apenas -i mostra apenas arquivos de rede; se você especificar algo após o -i Você pode restringir qualquer um ou todos: IPv4 / 6, TCP / UDP, nome do host ou IP e número da porta / nome do serviço.

Gordon Davisson
fonte
2
Apenas no caso de ser útil para alguém como eu, que procura matar cegamente todos os processos usando uma determinada porta: lsof -i tcp:5000 | grep LISTEN | awk '{print $2}' | xargs kill mata todos os processos que escutam na porta 5000
JeremyKun