Entwickler

Port auf dem Mac bereits belegt

Auf einem TCP-Port und einer Adresse kann nur ein Prozess lauschen. Ein zweiter Server bricht dann mit „address already in use“ ab.

Gilt für: alle aktuellen macOS-Versionen.Geprüft: 29. Oktober 2026

Symptome

  • Ein Dev-Server bricht mit „EADDRINUSE“ oder „address already in use“ ab.
  • Docker kann einen Port nicht veröffentlichen, weil „port is already allocated“.
  • Der Port war vor einem Absturz oder einem Neustart deines Editors frei.

Mögliche Ursachen

  • Eine alte Instanz deines Servers. Ein Server aus einem früheren Lauf läuft noch im Hintergrund.
  • Eine andere App. Eine andere App nutzt denselben Port. Ab macOS 12 nutzt der AirPlay-Empfänger die Ports 5000 und 7000.
  • Ein Container. Ein laufender Container veröffentlicht denselben Port auf dem Mac.

So prüfst du es

  1. Finde den Prozess, der auf dem Port lauscht. Ersetze 3000 durch deinen Port.

    lsof -nP -iTCP:3000 -sTCP:LISTEN

    Ausgabe Die Spalten COMMAND und PID nennen den Prozess.

  2. Um Prozesse anderer Benutzer zu sehen, führe denselben Befehl mit sudo aus.

    sudo lsof -nP -iTCP:3000 -sTCP:LISTEN

    Erfordert ein Administratorpasswort.

  3. Zeige mehr über den Prozess an.

    ps -p 12345 -o pid,command
  4. Suche nach Containern, die den Port veröffentlichen.

    docker ps

So behebst du es

  1. Wenn der Prozess dir gehört, beende ihn in seinem eigenen Terminalfenster mit Control-C.

  2. Andernfalls sende ihm das Signal zum Beenden. Verwende seine PID.

    kill 12345
  3. Wenn er sich nicht beendet, verwende kill -9. Der Prozess kann dann seine Daten nicht sichern.

  4. Gehört der Prozess zu macOS, beende ihn nicht. Wähle einen anderen Port für deinen Server.

  5. Wenn es Port 5000 oder 7000 ist, lies Port 5000 oder 7000 auf dem Mac belegt: AirPlay-Empfänger.

Mit Kilobat

  1. Liste die offenen Sockets eines Prozesses auf.

    kilobat destinations --pid 12345
  2. Beende einen Prozess über seine PID. Füge --force nur hinzu, wenn er sich nicht beendet.

    kilobat quit 12345

Fragen

Warum zeigt lsof nichts an, obwohl der Port belegt ist?

lsof zeigt nur die Prozesse, die du untersuchen darfst. Führe es mit sudo aus, um alle Prozesse zu sehen.

Was bewirken -n und -P?

Sie verhindern, dass lsof Adressen in Namen und Ports in Dienstnamen umwandelt. Die Ausgabe kommt schneller und zeigt Zahlen.

Quellen

Quellen geprüft am 29. Oktober 2026. Die Manpages sind die mit macOS installierten; öffne eine mit man <name> im Terminal.