Erreurs
❌ Erreur Linux "Address already in use" — Causes et Solutions
🐧 Erreur Linux
Le port est déjà occupé par un autre processus
L'erreur
Address already in use (EADDRINUSE) signifie qu'un processus tente de se lier à un port déjà utilisé par un autre processus. Fréquente au redémarrage d'un service ou lors du lancement de deux instances du même service.⚠️ Causes possibles
Service déjà démarré
Nginx, Apache ou un autre service tourne déjà sur ce port
Ancien processus zombie
Un processus planté n'a pas libéré le port
État TIME_WAIT TCP
Une connexion récente est en attente de fermeture TCP (TIME_WAIT ~60s)
Deux services sur le même port
Apache et Nginx configurés tous deux sur le port 80
Redémarrage trop rapide
Le socket n'a pas eu le temps d'être libéré après un kill
🔧 Solutions étape par étape
1
Trouver le processus qui utilise le port
# Méthode 1 : ss (recommandé) ss -tulnp | grep :80 ss -tulnp | grep :443 ss -tulnp | grep :8080 # Méthode 2 : lsof lsof -i :80 lsof -i TCP:80 -s TCP:LISTEN # Méthode 3 : fuser fuser 80/tcp fuser -v 80/tcp # Méthode 4 : netstat netstat -tulnp | grep :80
2
Arrêter le processus qui bloque
# Arrêter proprement (SIGTERM)
kill $(lsof -t -i:80)
kill $(ss -tulnp | grep :80 | awk '{print $7}' | cut -d= -f2)
# Forcer l'arrêt (SIGKILL) si kill ne suffit pas
kill -9 $(lsof -t -i:80)
fuser -k 80/tcp
# Arrêter le service systemd
systemctl stop nginx
systemctl stop apache23
Gérer l'état TIME_WAIT
# Voir les connexions en TIME_WAIT ss -tan | grep TIME-WAIT | grep :80 # Permettre la réutilisation du port (SO_REUSEADDR) # Dans /etc/sysctl.conf : net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 15 # Appliquer immédiatement sysctl -p # Attendre que TIME_WAIT expire (~60 secondes)
4
Changer le port du service
# Nginx — changer le port d'écoute nano /etc/nginx/sites-available/default # Modifier : listen 80; → listen 8080; nginx -t && systemctl reload nginx # Apache — changer le port nano /etc/apache2/ports.conf # Modifier : Listen 80 → Listen 8080 # Node.js — changer le port dans le code # PORT=3001 node app.js
🛡️ Comment éviter cette erreur
- ✅ Toujours utiliser
ss -tulnp | grep :PORTavant de démarrer un service sur un nouveau port - ✅ Activer
net.ipv4.tcp_tw_reuse = 1dans sysctl.conf pour les environnements à fort trafic - ✅ Ne pas lancer deux services web (nginx + apache) sans reverse proxy clair
- ✅ Utiliser
systemctl stopplutôt quekill -9pour laisser le temps aux sockets de se fermer proprement
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google