---
title: "Ошибка «Address already in use» на Mac: как найти процесс на порту · Руководства Kilobat"
url: "https://kilobat.app/ru/guides/port-already-in-use.html"
description: "Когда dev-сервер пишет, что адрес уже используется, найдите с помощью lsof процесс, который слушает порт, и остановите его или выберите другой порт."
---

Разработчикам

# Порт уже занят на Mac

Слушать порт TCP на одном адресе может только один процесс. Второй сервер тогда завершается с ошибкой «address already in use».

Применимость: все актуальные версии macOS. · Проверено: 29 октября 2026 г.

## Симптомы

- Dev-сервер завершается с ошибкой «EADDRINUSE» или «address already in use».
- Docker не может опубликовать порт: «port is already allocated».
- Порт был свободен до сбоя или перезапуска редактора.

## Вероятные причины

- **Старая копия вашего сервера.** Сервер от прошлого запуска всё ещё работает в фоне.
- **Другое приложение.** Тот же порт использует другое приложение. В macOS 12 и новее ресивер AirPlay занимает порты 5000 и 7000.
- **Контейнер.** Запущенный контейнер публикует на Mac тот же порт.

## Как проверить

1. Найдите процесс, который слушает порт. Замените 3000 на свой порт.

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

   Вывод Процесс указан в столбцах COMMAND и PID.
2. Чтобы увидеть процессы других пользователей, выполните ту же команду с sudo.

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

   Нужен пароль администратора.
3. Покажите подробности о процессе.

   ```
   ps -p 12345 -o pid,command
   ```
4. Поищите контейнеры, которые публикуют этот порт.

   ```
   docker ps
   ```

## Как исправить

1. Если процесс ваш, остановите его в его окне Терминала клавишами Control-C.
2. Иначе отправьте ему сигнал завершения. Используйте его PID.

   ```
   kill 12345
   ```
3. Если он не останавливается, используйте `kill -9`. Процесс не сможет сохранить данные.
4. Если процесс принадлежит macOS, не останавливайте его. Выберите для своего сервера другой порт.
5. Если это порт 5000 или 7000, прочитайте [Порт 5000 или 7000 занят на Mac: ресивер AirPlay](https://kilobat.app/ru/guides/airplay-receiver-port-5000.html).

## С Kilobat

1. Выведите открытые сокеты одного процесса.

   ```
   kilobat destinations --pid 12345
   ```
2. Завершите процесс по PID. Добавляйте `--force`, только если он не останавливается.

   ```
   kilobat quit 12345
   ```

## Вопросы

**Почему lsof ничего не показывает, хотя порт занят?**

lsof показывает только процессы, которые вам доступны для просмотра. Чтобы увидеть все процессы, запустите его с sudo.

**Что делают -n и -P?**

Они не дают lsof превращать адреса в имена, а порты — в названия служб. Вывод появляется быстрее и показывает числа.

## Источники

- lsof(8), man-страница из macOS 27.2
- kill(1) и ps(1), man-страницы из macOS 27.2
- [Поддержка Apple: TCP- и UDP-порты, используемые программными продуктами Apple](https://support.apple.com/en-us/103229)

Источники проверены 29 октября 2026 г. Man-страницы — те, что установлены вместе с macOS; откройте любую командой `man <name>` в Терминале.

## Похожие руководства

- [Порт 5000 или 7000 занят на Mac: «Ресивер AirPlay»](https://kilobat.app/ru/guides/airplay-receiver-port-5000.html): Apple указывает TCP-порты 5000 и 7000 для AirPlay.
- [Не удаётся подключиться к контейнеру Docker с Mac](https://kilobat.app/ru/guides/docker-container-from-mac.html): Docker на Mac запускает контейнеры в виртуальной машине Linux.
- [Контейнер не может подключиться к localhost на Mac](https://kilobat.app/ru/guides/localhost-from-container.html): У каждого контейнера свой сетевой стек.
- [Какое приложение занимает канал на Mac](https://kilobat.app/ru/guides/which-app-uses-bandwidth.html): «Мониторинг системы» и nettop показывают, какие процессы отправляют и получают данные.
