18 points par givvemee 2026-01-20 | 6 commentaires | Partager sur WhatsApp

Quand on développe, on finit par taper des commandes comme lsof -i :3000 un nombre incalculable de fois.
« Quel est le processus qui utilise ce port ? », « J’ai l’impression de ne pas avoir arrêté ce serveur tout à l’heure… »

ports-cli est un outil CLI qui affiche proprement tous les ports actuellement ouverts avec le nom du processus et le chemin du projet.

Fonctionnalités principales

  • Vue d’ensemble : affiche les ports ouverts, le nom du processus et le chemin du projet sous forme de tableau
  • Reconnaissance des projets Node.js : lit le name du package.json et affiche le vrai nom du projet au lieu de node
  • Filtrage des processus utilisateur : avec l’option -u, exclut les processus système pour ne voir que ceux que j’ai lancés
  • Arrêt : ports bye 3000 tue immédiatement le processus utilisant ce port

Installation

brew tap givvemee/tap  
brew install ports-cli  

Utilisation

ports              # affiche tous les ports en écoute  
ports -u           # seulement les processus que j’ai lancés  
ports bye 3000     # arrête le processus sur le port 3000  

Exemple de sortie

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

Réservé à macOS, l’outil fonctionne de manière légère sous forme de script Bash, sans dépendances supplémentaires.

Vos retours sont les bienvenus. :)

6 commentaires

 
channprj 2026-01-26

Oh, il y a des fonctionnalités bien pratiques. 👍🏻

Dans le cas de macOS, il est aussi possible de vérifier simplement cela avec la commande ci-dessous, sans installation supplémentaire.
Vous pouvez l’ajouter à ~/.zshrc.

(Je le partage à titre de référence !)

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

Ah, donc vous aviez créé un alias portcheck et vous l’utilisiez comme ça. C’est une bonne idée aussi. Merci !

 
channprj 2026-01-27

Je le repartage car il y avait un problème de guillemets doubles.

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

Je me demande quels sont les avantages par rapport à sudo netstat -tnlp.

 
channprj 2026-01-26

Comme vous le verrez en l’utilisant, l’affichage est présenté de manière un peu plus organisée.
Il y a aussi une fonction de filtre pour ne voir que les processus directement utilisés par l’utilisateur.

 
yshrust 2026-01-21

Oh, je l’ai installé et essayé tout de suite, et c’est simple donc très agréable à utiliser !!
Merci haha