LS e portas de escuta

50

Estou tentando fazer com que todos os processos atinjam uma conexão de rede no Mac OS X. netstatnão tem a -popção e estou tentando com lsof

lsof -i -sTCP:LISTEN

me dá uma lista justa de processos de escuta, mas não todos. Posso, por exemplo, telnet para a porta 10080, onde tenho um processo ouvindo uma conexão, mas isso não é mostrado na saída de lsof. o que estou perdendo?

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.

mas

$ sudo lsof -n -i | grep 10080
$
Matteo
fonte
3
A saída de lsof diz em amandavez de 10080?
Jon Lin
3
@ JonLin Eu não percebi que o -núnico afeta endereços e não portas. Para obter números de porta , também tenho que usar -P. Graças
Matteo
3
@ JonLin: mas você tem post lsof -i -sTCP:LISTEN, e sem o -ne não revelou o 10080 também. Então você tem que usar o -P.
Hanan N.

Respostas:

75
sudo lsof -iTCP -sTCP:LISTEN
sudo lsof -iTCP -sTCP:LISTEN -P
sudo lsof -iTCP -sTCP:LISTEN -P -n
sudo lsof -iTCP -sTCP:LISTEN -n

Todos retornam as mesmas 32 entradas ( ... | wc -l) no meu MBP do Lion, muito usado.

-P -nimpede lsofa resolução de nomes e não bloqueia. Na falta de um desses, pode ser muito lento.

Para UDP: sudo lsof -iUDP -P -n | egrep -v '(127|::1)'. Sem -ne -P, leva muito tempo.

Lembrete: isso não inclui configurações de firewall.

Barry A.
fonte
3
Sim, o problema estava faltando -P. Eu assumi erradamente que se -naplicava não apenas aos IPs, mas também aos números de porta.
Matteo
-1
  1. Primeiro, encontre o ID do processo (pid) que ocupou a porta necessária (por exemplo, 5434):

    ps aux | grep 5434
    
  2. Mate esse processo:

    kill -9 <pid>
    
Ashutosh Gupta
fonte
5
ps auxnão lista as portas que um processo está usando #
Matteo
Eu concordo com Matteo; tem certeza de que não fez algo como netstat -anp | grep 5434 (que irá retornar uma lista de coisas que está escutando em 5434, ea primeira ou a segunda coluna é o pid?)
Foon
6
Assim, só poderia funcionar em uma situação em que um processo fosse chamado com o número da porta fornecido explicitamente na sequência de execução e essa parte da sequência fosse correspondida pelo grep.
techraf
11
Usar kill -9como primeira opção para se livrar de um processo é uma escolha extrema. Além disso, isso realmente não responde à pergunta, que não é sobre matar coisas, mas descobrir o que está acontecendo.
Lindes