18 puntos por givvemee 2026-01-20 | 6 comentarios | Compartir por WhatsApp

Cuando desarrollas, terminas escribiendo comandos como lsof -i :3000 una y otra vez.
"¿Qué está usando este puerto?", "Creo que no apagué ese servidor hace rato..."

ports-cli es una herramienta CLI que muestra de forma ordenada todos los puertos abiertos junto con el nombre del proceso y la ruta del proyecto.

Funciones principales

  • Vista rápida: muestra los puertos abiertos, el nombre del proceso y la ruta del proyecto en formato de tabla
  • Reconocimiento de proyectos Node.js: lee el nombre de package.json y muestra el nombre real del proyecto en lugar de node
  • Filtrado de procesos del usuario: con la opción -u, excluye los procesos del sistema y te deja ver solo los que tú levantaste
  • Finalizar: ports bye 3000 mata de inmediato el proceso que usa ese puerto

Instalación

brew tap givvemee/tap  
brew install ports-cli  

Uso

ports              # muestra todos los puertos en escucha  
ports -u           # solo los procesos que levanté yo  
ports bye 3000     # finaliza el proceso del puerto 3000  

Ejemplo de salida

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

Es exclusivo para macOS y funciona de forma ligera como script de Bash, sin dependencias adicionales.

Se agradece el feedback. :)

6 comentarios

 
channprj 2026-01-26

Oh, tiene varias funciones útiles. 👍🏻

En el caso de macOS, también es posible revisarlo fácilmente con el siguiente comando sin necesidad de instalar nada adicional.
Si lo agregan a ~/.zshrc, les quedará disponible.

(Lo comparto como referencia).

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

Así que creaste y usabas un alias portcheck de esta forma. Este método también podría servir. ¡Gracias!

 
channprj 2026-01-27

Lo comparto de nuevo porque había un problema con las comillas dobles.

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

Me gustaría saber qué ventajas tiene frente a sudo netstat -tnlp.

 
channprj 2026-01-26

Si lo usas, te darás cuenta de que lo muestra de una forma más ordenada.
También tiene una función de filtro para que el usuario pueda ver solo los procesos que está usando directamente.

 
yshrust 2026-01-21

Oh, lo instalé y lo probé de inmediato, y como es simple, es muy cómodo de usar. ¡Gracias! jaja