Как «очистить» порт при перезапуске сервера запуска django - PullRequest
67 голосов
/ 19 мая 2009

Часто при перезапуске сервера запуска Django, если я использую тот же номер порта, я получаю сообщение «порт уже используется». Впоследствии мне нужно увеличивать номер порта каждый раз, чтобы избежать этого.

Однако это относится не ко всем серверам, поэтому мне интересно, как я могу добиться этого в текущей системе, над которой я работаю?

Кстати, платформа Ubuntu 8.10

Ответы [ 19 ]

122 голосов
/ 26 апреля 2011

Я нашел эту информацию (родом из Кристин Örn Sigurðsson), чтобы решить мою проблему:

Чтобы уничтожить его с помощью -9, вам нужно перечислить все запущенные процессы manage.py, например:

ps aux | grep -i manage

Вы получите вывод, похожий на этот, если вы начали на многих портах:

14770     8264  0.0  1.9 546948 40904 ?        S    Sep19   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8006
14770    15215  0.0  2.7 536708 56420 ?        S    Sep13   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8001
14770    30144  0.0  2.1 612488 44912 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8000
14770    30282  0.0  1.9 678024 40104 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8002
14770    30592  0.0  2.1 678024 45008 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8003
14770    30743  0.0  2.1 678024 45044 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8004

Затем вам нужно выбрать pid (второй номер слева) для правого процесса manage.py (python manage.py runserver ... и т. Д.) И выполнить:

kill -9 pid

В приведенном выше примере, если вы хотите освободить порт 8000, вы должны сделать:

kill -9 30144
39 голосов
/ 19 мая 2009

Вы получаете это сообщение, потому что сервер уже запущен (возможно, в фоновом режиме). Обязательно остановите процесс (выведите его на передний план и нажмите ctrl-c), чтобы остановить процесс.

29 голосов
/ 13 марта 2013

Если команда ps aux (согласно ответу Мейло) не перечисляет процесс, который вы хотели убить, но показывает активный порт при netstat -np | grep 8004 сетевой активности, попробуйте эту команду (работала в Ubuntu).

sudo fuser -k 8004/tcp

где as, 8004 - номер порта, который вы хотите закрыть. Это должно убить все процессы, связанные с портом 8004.

14 голосов
/ 20 мая 2009

Нет, он не идиот, ребята. То же самое происходит со мной. Очевидно, это ошибка в UUID-процессе python, продолжающемся долго после завершения работы сервера django, который связывает порт.

12 голосов
/ 29 мая 2015
fuser -k 8000/tcp

Запустите в терминале, он работает в убуту. 8000 - это порт.

9 голосов
/ 21 мая 2014

Эта ошибка связана с тем, что сервер уже запущен.

Фон

Я отвечаю на более общем уровне, не относящемся к Джанго, как задает оригинальный вопрос. Так что те, которые попадают сюда из Google, могут легко решить проблему.

Решение

Когда вам нужно очистить порт, все, что вам нужно сделать, это эти два шага

  1. В терминале запустить fg
  2. Нажмите Control-C (если на Mac)

Объяснение

fg выводит процесс на передний план . Затем Control-C останавливает сервер.

* +1025 * Пример

У меня действительно была эта проблема с моим портом 8000 при запуске углового приложения. Я получил сообщение об ошибке npm start

Failed at the angular-seed@0.0.0 start script error

Итак, я запустил fg, затем остановил сервер с помощью Control-C

fg

Тогда я смог успешно запустить сервер

npm start

6 голосов
/ 20 мая 2015

Я использую pkill -If 'manage.py' (-I означает интерактивный, -f соответствует больше, чем просто имя процесса). См. Как уничтожить все процессы с данным частичным именем? для получения дополнительной информации о pkill.

6 голосов
/ 10 марта 2016

Введите fg в терминале, чтобы вывести фоновое задание на передний план.

Нажмите Ctrl + C , чтобы закрыть / остановить работающий сервер.

3 голосов
/ 19 декабря 2016
sudo lsof -t -i tcp:8000 | xargs kill -9

Если вы хотите освободить порт 8000, то просто скопируйте команду и вставьте в ваш cmd запрос на пароль sudo И тогда ты готов идти.

3 голосов
/ 12 августа 2015

Если номер порта, который вы пытаетесь установить, равен 8001, используйте эту команду

sudo fuser -k 8001/tcp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...