Я занимаюсь веб-разработкой в django (python). Программа запускает собственный сервер разработки на порт 8000. Я выключил сервер и теперь должен перезагрузить его, но я получаю «Ошибка: этот порт уже используется»

Я сделал sudo /etc/init.d/network restart eth0 и результат был:

Shutting down network interfaces:
Setting up network interfaces:
    eth0      Startmode is 'manual' -> skipping                                               skipped
    eno16777736 device: Advanced Micro Devices, Inc. 
    eno16777736 DHCP4 client (dhcpcd) is running
    eno16777736 IP address: 192.168.163.128/24
    eno16777736 DHCP6 client (dhclient6) is running
    eno16777736 . . . but is still waiting for data
    eno16777736       valid_lft forever preferred_lft forever IP address: 192.168.163.128/24
    eno16777736 is up                                                                         done
    lo        
    lo       valid_lft forever preferred_lft forever IP address: 127.0.0.1/8
    lo        is up                                                                         done

и затем запустить sudo netstat -np | grep 8000 ничего не возвращает. Но когда я пытаюсь запустить сервер снова, это выдает мне ту же ошибку. Перезагрузка машины полностью исправляет это, но я не могу делать это каждый раз.

2 ответа2

1

Всякий раз, когда это происходит со мной, я запускаю ps aux | grep ruby и найди список сервисов, которые соответствуют моим критериям. В моем случае я занимаюсь разработкой Ruby on Rails, поэтому буду использовать grep ruby .

Как только я нахожу свой PID (второй столбец), я выполняю команду kill -9 PID

Это убьет процесс, и я смогу перезапустить мой сервис, используя тот же порт.

0

Вы забыли опцию "-a", чтобы nestat. В противном случае просто «-np» даст вам "не слушающие" сокеты (или сокеты, подключенные). Поэтому попробуйте в конце концов использовать «-npa», чтобы быть уверенным, что вы получаете полные данные (как слушающие, так и не слушающие).

При этом я бы предложил в случае сделать:

лсоф | grep TCP | grep 8000

Если у вас установлен lsof.

Если сервер прослушивает (или хочет прослушивать) все сетевые интерфейсы, он может все еще ожидать, например, на устройстве обратной связи. Поэтому я предлагаю попробовать с lsof, как уже упоминалось.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .