Herramienta CLI que muestra de un vistazo los puertos y procesos abiertos
(github.com/givvemee)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.jsony muestra el nombre real del proyecto en lugar denode - 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 3000mata 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
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"
Así que creaste y usabas un alias
portcheckde esta forma. Este método también podría servir. ¡Gracias!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'
Me gustaría saber qué ventajas tiene frente a
sudo netstat -tnlp.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.
Oh, lo instalé y lo probé de inmediato, y como es simple, es muy cómodo de usar. ¡Gracias! jaja