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.