Layer 8Ehrlicher Tech-Support
SoftwareSchweregrad: LästigEADDRINUSE

Port already in use (EADDRINUSE) – Prozess finden & beenden

Server startet nicht wegen EADDRINUSE / 'address already in use'? So findest du den blockierenden Prozess und gibst den Port frei.

Aufwand:
ca. 5 Min.
Voraussetzung:
sudo-Rechte, Terminal

Das Symptom

Du startest deinen Entwicklungsserver und statt „listening on :3000“ wirft die Konsole dir Error: listen EADDRINUSE: address already in use :::3000 entgegen. Der Prozess bricht sofort ab. Du startest erneut – gleiches Ergebnis. Der Port ist besetzt, obwohl du dir sicher bist, alles geschlossen zu haben.

Die „Layer 8“-Wahrheit

Ein Netzwerkport kann immer nur von einem Prozess belegt sein – das ist kein Fehler, sondern eine Grundregel. EADDRINUSE heißt also unbestechlich: Da läuft schon jemand. In der Entwicklungspraxis ist dieser „jemand“ fast immer eine frühere Instanz derselben App, die nach einem Absturz oder einem weggeklickten Terminal im Hintergrund weiterlebt, den Port festhält und dabei unsichtbar bleibt. Kurz: Man kämpft gegen sein eigenes Geistergespenst von vor fünf Minuten. Ein Blick mit lsof verrät die PID – und ein gezieltes kill beendet den Spuk schneller als der zehnte Neustartversuch.

Die echte, verifizierte Lösung

1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:

  1. 1.

    Den blockierenden Prozess identifizieren

    Herausfinden, welche Prozess-ID (PID) den Port belegt – je nach Betriebssystem:

    sudo lsof -i :3000            # Linux/macOS
    ss -tlnp | grep :3000         # Linux (Alternative)
    netstat -ano | findstr :3000  # Windows
    
  2. 2.

    Den Prozess gezielt beenden

    Mit der ermittelten PID den Prozess beenden. Erst normal (SIGTERM), nur im Notfall hart (-9):

    kill 12345                    # Linux/macOS (sanft)
    kill -9 12345                 # erzwungen
    taskkill /PID 12345 /F        # Windows
    
  3. 3.

    Einen anderen Port verwenden

    Statt den Blocker zu beenden, kann die Anwendung auf einen freien Port ausweichen – bei vielen Node-Tools über eine Umgebungsvariable:

    PORT=3001 npm run dev
    
  4. 4.

    Verwaiste Node-/Dev-Prozesse aufräumen

    Nach Abstürzen bleiben oft Zombie-Prozesse zurück, die den Port halten. Gezielt die betroffenen Prozesse beenden (Vorsicht: pkill trifft alle passenden):

    pkill -f "node .*dev"
    
  5. 5.

    Prüfen, ob ein Dienst den Port dauerhaft belegt

    Manchmal ist es kein Zombie, sondern ein echter Dienst (z. B. eine lokale Datenbank oder ein anderer Webserver), der den Port regulär nutzt. Dann diesen Dienst umkonfigurieren statt ihn ständig zu killen.

Häufige Fragen (FAQ)

?Was bedeutet der Fehler EADDRINUSE?

'Error: address already in use' – der Port, an den sich dein Programm binden möchte (z. B. 3000), wird bereits von einem anderen Prozess belegt. Oft ist es eine frühere, nicht sauber beendete Instanz derselben Anwendung.

?Wie finde ich heraus, welcher Prozess einen Port blockiert?

Linux/macOS: 'sudo lsof -i :3000' oder 'ss -tlnp | grep :3000'. Windows: 'netstat -ano | findstr :3000' zeigt die PID, die du dann gezielt beenden kannst.

Belege

Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.

Zuletzt geprüft am . Dokumentation altert – ein Datum daneben ist der einzige ehrliche Umgang damit.

Auch zu finden unter

Verwandte Fehler

SWAnfängerfehlerEACCES: permission denied

npm EACCES: permission denied beheben

npm install -g bricht mit 'EACCES: permission denied' ab? Nicht sudo verwenden. So installierst du globale Pakete korrekt über nvm oder ein eigenes Prefix.

SWLästigCannot connect to the Docker daemon

Docker: Cannot connect to the Docker daemon

docker-Befehle scheitern mit 'Cannot connect to the Docker daemon'? Meist läuft der Dienst nicht oder Rechte fehlen. So läuft es wieder.

SWLästigno space left on device

Docker: no space left on device beheben

Docker bricht mit 'no space left on device' ab, obwohl scheinbar Platz da ist? Alte Images, Container und Build-Cache fressen die Platte. So räumst du auf.