Quem está ouvindo em uma determinada porta TCP no Mac OS X?
1382
No Linux, posso usar netstat -pntl | grep $PORTou fuser -n tcp $PORTdescobrir qual processo (PID) está escutando na porta TCP especificada. Como obtenho as mesmas informações no Mac OS X?
Substitua $PORTpelo número da porta ou por uma lista de números de porta separados por vírgula.
Anexe antes sudo(seguido de um espaço) se precisar de informações sobre portas abaixo do # 1024.
O -nsinalizador é para exibir endereços IP em vez de nomes de host. Isso faz com que o comando seja executado muito mais rápido, porque as pesquisas de DNS para obter os nomes de host podem ser lentas (vários segundos ou um minuto para muitos hosts).
A -Pbandeira é para a exibição de números brutos de porta em vez de nomes resolvidos como http, ftpou nomes de serviços mais esotéricos como dpserve, socalia.
Veja os comentários para mais opções.
Para ser completo, porque frequentemente usados juntos:
Prefixe isso com sudopara ver processos que você não possui.
Gordon Davisson
30
no leão, trabalhou com uma mudançasudo lsof -i TCP:$PORT | grep LISTEN
dhaval
58
Em Mountain Lion, você não precisa grep:sudo lsof -iTCP:$PORT -sTCP:LISTEN
Siu Ching Pong -Asuka Kenji-
16
depois de tantas pesquisas, essa é a melhor. as pessoas que desejam copiar diretamente o comando devem substituir $ PORT pelo número da porta real ou definir a variável PORT e também para várias portas como: export PORT = 8080,4433; lsof -n -i4TCP: $ PORT
siddhusingh
2
Um não precisa de sudo se a porta para investigar é acima de 1024.
stigkj
626
Desde o Snow Leopard (10.6), até o Mojave (10.14) e Catalina (10,15) , todas as versões do macOS suportam isso:
sudo lsof -iTCP -sTCP:LISTEN -n -P
Pessoalmente, acabei com esta função simples no meu ~/.bash_profile:
listening() {
if [ $# -eq 0 ]; then
sudo lsof -iTCP -sTCP:LISTEN -n -P
elif [ $# -eq 1 ]; then
sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -i --color $1
else
echo "Usage: listening [pattern]"
fi
}
O listeningcomando Then fornece uma lista de processos que estão ouvindo em alguma porta e a listening smthcumprimenta por algum padrão.
Tendo isso, é muito fácil perguntar sobre um processo específico, por exemplo listening dropbox, ou porta, por exemplo listening 22.
lsofO comando tem algumas opções especializadas para perguntar sobre porta, protocolo, processo etc. mas, pessoalmente, achei as funções acima muito mais úteis, pois não preciso me lembrar de todas essas opções de baixo nível. lsofé uma ferramenta bastante poderosa, mas infelizmente não é tão confortável de usar.
Isso está acontecendo nos meus arquivos de ponto. Eu procuro a cada poucos meses e sempre encontro essa resposta.
Danemacmillan
1
Eu acho que essa resposta deve ser aceita, como o OP disse -pntl, o que listaria todos os serviços. A resposta aceita solicita que um ou mais números de porta sejam especificados, o que não é remotamente o mesmo.
Isso é ótimo. Eu prefiro saber o que está lá antes de matá-lo, então (baseado neste) Eu só acrescentou ao meu bashrc: whatsonport() { ps -ef | grep `lsof -t -i :$1` }, então:⇒ whatsonport 3000 --> 501 14866 14865 0 6:07AM ttys006 0:01.73 node .
Sigfried
1
Obrigado, lsof -i :PORT_NUMBERfez um trabalho para mim.
Você também precisa adicionar grep LISTENpara mostrar apenas os ouvintes.
pts
3
Era disso que eu precisava! lsofNão foi possível encontrar a porta. mas netstatmostrou que estava aberto. -vfoi o molho secreto que me faltava.
Aaron McMillin 29/11
32
No macOS, eis uma maneira fácil de obter o ID do processo que está escutando em uma porta específica com o netstat . Este exemplo procura um processo que serve conteúdo na porta 80:
encontre o servidor em execução na porta 80
netstat -anv | egrep -w [.]80.*LISTEN
saída de amostra
tcp4 0 0 *.80 *.* LISTEN 131072 131072 715 0
O segundo da última coluna é o PID. Acima, são 715 .
opções
-a - mostra todas as portas, incluindo aquelas usadas pelos servidores
-n- mostre números, não procure nomes. Isso torna o comando muito mais rápido
-v - saída detalhada, para obter os IDs do processo
-w- procure palavras. Caso contrário, o comando retornará informações para as portas 8000 e 8001, não apenas "80"
LISTEN - forneça informações apenas para portas no modo LISTEN, ou seja, servidores
Eu sou um cara do Linux. No Linux, é extremamente fácil com netstat -ltpnou qualquer combinação dessas letras. Mas no Mac OS X netstat -an | grep LISTENé o mais humano. Outros são muito feios e muito difíceis de lembrar ao solucionar problemas.
Sua resposta não é ruim, mas está em uma pergunta com várias respostas altamente votadas e aceita, de vários anos atrás. No futuro, tente se concentrar em perguntas mais recentes, especialmente aquelas que ainda não foram respondidas.
Este comando exibe portas não TCP também e não ouvintes também? A pergunta solicita explicitamente ouvintes apenas nas portas TCP.
pts
De acordo com a página do manual lsof (8): If no address is specified, this option [-i] selects the listing of all Internet and x.25 (HP-UX) network files.
Misha Tavkhelidze
@Misha Tavkhelidze: Por isso, também exibe os não ouvintes, por isso não responde à pergunta.
Sample output
checking established connections
107.178.244.155 : United States
17.188.136.186 : United States
17.252.76.19 : United States
17.252.76.19 : United States
17.188.136.186 : United States
5.45.62.118 : Netherlands
40.101.42.66 : Ireland
151.101.1.69 : United States
173.194.69.188 : United States
104.25.170.11 : United States
5.45.62.49 : Netherlands
198.252.206.25 : United States
151.101.1.69 : United States
34.198.53.220 : United States
198.252.206.25 : United States
151.101.129.69 : United States
91.225.248.133 : Ireland
216.58.212.234 : United States
displaying listening ports
mysqld TCP *:3306 (LISTEN)
com.avast TCP 127.0.0.1:12080 (LISTEN)
com.avast TCP [::1]:12080 (LISTEN)
com.avast TCP 127.0.0.1:12110 (LISTEN)
com.avast TCP [::1]:12110 (LISTEN)
com.avast TCP 127.0.0.1:12143 (LISTEN)
com.avast TCP [::1]:12143 (LISTEN)
com.avast TCP 127.0.0.1:12995 (LISTEN)
com.avast [::1]:12995 (LISTEN)
com.avast 127.0.0.1:12993 (LISTEN)
com.avast [::1]:12993 (LISTEN)
Google TCP 127.0.0.1:34013 (LISTEN)
Isso pode ser útil para verificar se você está conectado à Coréia do Norte! ;-)
Para o macOS, uso dois comandos juntos para mostrar informações sobre os processos que estão ouvindo na máquina e sobre o processo de conexão com servidores remotos. Em outras palavras, para verificar as portas de atendimento e as conexões atuais (TCP) em um host, você pode usar os dois comandos a seguir juntos
1. netstat -p tcp -p udp
2. lsof -n -i4TCP -i4UDP
Pensei em acrescentar minha opinião, espero que possa acabar ajudando alguém.
netstat -p tcp | grep $PORT
não exibe PIDs, pois o netstat no Mac OS X não pode exibir PIDs.netstat -anv
Exibe a porta no Mac OS X (fonte: solução abaixo por @SeanHamiliton)Respostas:
No macOS High Sierra e posterior, use este comando:
ou apenas para ver apenas IPv4:
Nas versões mais antigas, use um dos seguintes formulários:
Substitua
$PORT
pelo número da porta ou por uma lista de números de porta separados por vírgula.Anexe antes
sudo
(seguido de um espaço) se precisar de informações sobre portas abaixo do # 1024.O
-n
sinalizador é para exibir endereços IP em vez de nomes de host. Isso faz com que o comando seja executado muito mais rápido, porque as pesquisas de DNS para obter os nomes de host podem ser lentas (vários segundos ou um minuto para muitos hosts).A
-P
bandeira é para a exibição de números brutos de porta em vez de nomes resolvidos comohttp
,ftp
ou nomes de serviços mais esotéricos comodpserve
,socalia
.Veja os comentários para mais opções.
Para ser completo, porque frequentemente usados juntos:
Para matar o PID:
fonte
sudo
para ver processos que você não possui.sudo lsof -i TCP:$PORT | grep LISTEN
grep
:sudo lsof -iTCP:$PORT -sTCP:LISTEN
Desde o Snow Leopard (10.6), até o Mojave (10.14) e Catalina (10,15) , todas as versões do macOS suportam isso:
sudo lsof -iTCP -sTCP:LISTEN -n -P
Pessoalmente, acabei com esta função simples no meu
~/.bash_profile
:O
listening
comando Then fornece uma lista de processos que estão ouvindo em alguma porta e alistening smth
cumprimenta por algum padrão.Tendo isso, é muito fácil perguntar sobre um processo específico, por exemplo
listening dropbox
, ou porta, por exemplolistening 22
.lsof
O comando tem algumas opções especializadas para perguntar sobre porta, protocolo, processo etc. mas, pessoalmente, achei as funções acima muito mais úteis, pois não preciso me lembrar de todas essas opções de baixo nível.lsof
é uma ferramenta bastante poderosa, mas infelizmente não é tão confortável de usar.fonte
-pntl
, o que listaria todos os serviços. A resposta aceita solicita que um ou mais números de porta sejam especificados, o que não é remotamente o mesmo.Você também pode usar:
Isso funciona no Mavericks.
fonte
-i
opção torna significativamente mais rápido. 0,02 segundos vs 2 segundos. Na minha aplicação, isso fez a diferença.Atualização de janeiro de 2016
Realmente surpreso, ninguém sugeriu:
para obter as informações básicas necessárias. Por exemplo, verificando na porta 1337:
Outras variações, dependendo das circunstâncias:
Você pode facilmente criar isso para extrair o próprio PID. Por exemplo:
que também é equivalente (no resultado) a este comando:
Ilustração rápida:
Para ser completo, porque frequentemente usados juntos:
Para matar o PID:
ou como um forro:
fonte
lsof -t -i :1338
.-t
retornará a identificação do processo, assim você não terá que despertar / cabeça.kill -9 $(lsof -t -i :5000)
em el capitanwhatsonport() { ps -ef | grep `lsof -t -i :$1` }
, então:⇒ whatsonport 3000 --> 501 14866 14865 0 6:07AM ttys006 0:01.73 node .
lsof -i :PORT_NUMBER
fez um trabalho para mim.Isso funciona no Mavericks (OSX 10.9.2).
fonte
Para as portas LISTEN, ESTABELECIDAS e FECHADAS
Apenas para as portas LISTEN
Para uma porta LISTEN específica, por exemplo: porta 80
Ou se você quiser apenas um resumo compacto [nenhum serviço / aplicativo descrito], vá em NETSTAT. O lado bom aqui é que não é necessário sudo
Explicando os itens usados:
-n suprime o nome do host
-i para protocolos IPv4 e IPv6
-P omite nomes de porta
-a [over netstat] para todos os soquetes
-n [over netstat] não resolve nomes, mostra endereços de rede como números
fonte
no OS X, você pode usar a opção -v para o netstat para fornecer o pid associado.
tipo:
a saída ficará assim:
O PID é o número antes da última coluna, 3105 para este caso
fonte
grep LISTEN
para mostrar apenas os ouvintes.lsof
Não foi possível encontrar a porta. masnetstat
mostrou que estava aberto.-v
foi o molho secreto que me faltava.No macOS, eis uma maneira fácil de obter o ID do processo que está escutando em uma porta específica com o netstat . Este exemplo procura um processo que serve conteúdo na porta 80:
encontre o servidor em execução na porta 80
saída de amostra
O segundo da última coluna é o PID. Acima, são 715 .
opções
-a
- mostra todas as portas, incluindo aquelas usadas pelos servidores-n
- mostre números, não procure nomes. Isso torna o comando muito mais rápido-v
- saída detalhada, para obter os IDs do processo-w
- procure palavras. Caso contrário, o comando retornará informações para as portas 8000 e 8001, não apenas "80"LISTEN
- forneça informações apenas para portas no modo LISTEN, ou seja, servidoresfonte
Na versão mais recente do macOS, você pode usar este comando:
Se você acha difícil lembrar, talvez crie uma
bash
função e exporte-a com um nome mais amigável como essee adicione as seguintes linhas a esse arquivo e salve-o.
Agora você pode digitar
listening_on 80
seu terminal e ver qual processo está escutando na porta80
.fonte
No Snow Leopard (OS X 10.6.8), a execução de 'man lsof' gera:
(a entrada manual real é 'lsof -i 4 -a -p 1234')
As respostas anteriores não funcionaram no Snow Leopard, mas eu estava tentando usar 'netstat -nlp' até ver o uso de 'lsof' na resposta por pts.
fonte
Eu sou um cara do Linux. No Linux, é extremamente fácil com
netstat -ltpn
ou qualquer combinação dessas letras. Mas no Mac OS Xnetstat -an | grep LISTEN
é o mais humano. Outros são muito feios e muito difíceis de lembrar ao solucionar problemas.fonte
Isso mostra quem está fazendo o quê. Remova -n para ver os nomes de host (um pouco mais lento).
fonte
If no address is specified, this option [-i] selects the listing of all Internet and x.25 (HP-UX) network files.
-sTCP:LISTEN
alsof
Isso fez o que eu precisava.
fonte
Fiz um pequeno roteiro para ver não apenas quem está ouvindo onde, mas também exibir conexões estabelecidas e com quais países. Funciona no OSX Siera
Isso pode ser útil para verificar se você está conectado à Coréia do Norte! ;-)
fonte
Esta é uma boa maneira no macOS High Sierra:
fonte
Inspirado pelo usuário Brent Self:
lsof -i 4 -a | grep LISTEN
fonte
Para o macOS, uso dois comandos juntos para mostrar informações sobre os processos que estão ouvindo na máquina e sobre o processo de conexão com servidores remotos. Em outras palavras, para verificar as portas de atendimento e as conexões atuais (TCP) em um host, você pode usar os dois comandos a seguir juntos
Pensei em acrescentar minha opinião, espero que possa acabar ajudando alguém.
fonte