devops

Trouver et libérer un port utilisé

Identifier le processus qui utilise un port local et l’arrêter proprement sur macOS, Linux ou Windows.

Quand un serveur de développement refuse de démarrer avec une erreur comme EADDRINUSE, cela signifie généralement qu’un autre processus utilise déjà le port demandé.

Par exemple, ton application veut démarrer sur le port 3000, mais un ancien serveur Node.js tourne toujours en arrière-plan.

macOS et Linux

Pour identifier le processus qui utilise le port 3000 :

lsof -i :3000

Tu obtiendras une sortie similaire à :

COMMAND   PID   USER   FD   TYPE   DEVICE   NODE   NAME
node      48231 user   23u  IPv6            TCP    *:3000 (LISTEN)

La colonne PID contient l’identifiant du processus.

Dans cet exemple, le PID est 48231.

Pour arrêter proprement le processus :

kill 48231

Si le processus refuse de s’arrêter, tu peux forcer son arrêt :

kill -9 48231

kill -9 doit rester une solution de dernier recours, car le processus est arrêté immédiatement sans pouvoir effectuer son nettoyage habituel.

Windows

Pour identifier le processus qui utilise le port 3000 :

netstat -ano | findstr :3000

Le PID apparaît dans la dernière colonne.

Pour identifier l’application correspondant à ce PID :

tasklist | findstr 48231

Puis pour arrêter le processus :

taskkill /PID 48231 /F

Remplace 48231 par le PID trouvé précédemment.

Solution rapide avec npx

Pendant le développement, tu peux également utiliser kill-port :

npx kill-port 3000

Pour libérer plusieurs ports en même temps :

npx kill-port 3000 5454 5173

Cette méthode est pratique lorsqu’on veut simplement récupérer rapidement un port.

Les commandes système restent cependant utiles lorsqu’on souhaite comprendre quel processus utilise le port avant de l’arrêter.