18 pontos por givvemee 2026-01-20 | 6 comentários | Compartilhar no WhatsApp

Ao desenvolver, é comum acabar digitando comandos como lsof -i :3000 inúmeras vezes.
"O que está usando esta porta?", "Acho que não desliguei aquele servidor antes..."

ports-cli é uma ferramenta CLI que mostra de forma organizada todas as portas atualmente abertas, junto com o nome do processo e o caminho do projeto.

Principais recursos

  • Visualização rápida: exibe portas abertas, nome do processo e caminho do projeto em formato de tabela
  • Reconhecimento de projetos Node.js: lê o name do package.json e mostra o nome real do projeto no lugar de node
  • Filtro de processos do usuário: com a opção -u, exclui processos do sistema e mostra apenas os que você iniciou
  • Encerrar: ports bye 3000 mata imediatamente o processo da porta correspondente

Instalação

brew tap givvemee/tap  
brew install ports-cli  

Como usar

ports              # mostra todas as portas em escuta  
ports -u           # apenas os processos iniciados por mim  
ports bye 3000     # encerra o processo da porta 3000  

Exemplo de saída

  
PORT     PROCESS                  PATH  
----     -------                  ----  
3000     my-app                   ~/Documents/GitHub/my-app  
5432     postgres                 -  
8080     test-server              ~/Documents/GitHub/test-server  

Exclusivo para macOS, funciona de forma leve como um script Bash sem dependências adicionais.

Feedbacks são bem-vindos. :)

6 comentários

 
channprj 2026-01-26

Oh, tem uns recursos de conveniência bem legais aí. 👍🏻

No caso do macOS, também dá para verificar de forma simples com o comando abaixo, sem instalar nada separadamente.
É só colocar no ~/.zshrc.

(Compartilhando como referência!)

alias portcheck="printf "\033[4;37m%-15s %-8s %-20s %s\033[0m\n" "COMMAND" "PID" "PORT" "DIR"; sudo lsof -iTCP -sTCP:LISTEN -n -P | awk 'NR>1 {print $2, $1, $9}' | sort -u | while read pid cmd port; do dir=$(sudo lsof -p "$pid" -a -d cwd -F n 2>/dev/null | tail -1 | cut -c2-); printf "\033[1;32m%-15s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-20s\033[0m %s\n" "$cmd" "$pid" "$port" "$dir"; done"

 
givvemee 2026-01-27

Então você criou e usou um alias portcheck assim. Esse também pode ser um bom jeito. Obrigado!

 
channprj 2026-01-27

Estou compartilhando novamente por causa de um problema com aspas duplas.

alias portcheck='printf "\033[4;37m%-36s %-8s %-22s %s\033[0m\n" "COMMAND" "PID" "LISTEN" "CWD"; sudo lsof -nP -iTCP -sTCP:LISTEN -F pcn 2>/dev/null | awk '"'"'BEGIN{pid=cmd=name=""}/^p/{pid=substr($0,2)}/^c/{cmd=substr($0,2)}/^n/{name=substr($0,2);if(pid&&cmd&&name)print pid"\t"cmd"\t"name}'"'"' | sort -u | while IFS=$'"'"'\t'"'"' read -r pid cmd name; do dir=$(sudo lsof -n -p "$pid" -a -d cwd -F n 2>/dev/null | sed -n '"'"'s/^n//p'"'"' | tail -1); [ -z "$dir" ] && dir="-"; printf "\033[1;32m%-36.36s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-22s\033[0m %s\n" "$cmd" "$pid" "$name" "$dir"; done'

 
chcv0313 2026-01-22

Quero saber quais são as vantagens em relação a sudo netstat -tnlp.

 
channprj 2026-01-26

Se você usar, vai perceber que ele mostra as informações de forma mais organizada.
Também parece haver um recurso de filtro para visualizar apenas os processos que o próprio usuário está usando.

 
yshrust 2026-01-21

Nossa, instalei e testei na hora, e como é simples, fica bem fácil de usar!!
Obrigado(a) hehe