Django Server Error : 포트가 이미 사용 중입니다


204

Django 서버를 다시 시작하면 다음 오류가 표시됩니다.

this port is already running....

이 문제는 다른 운영 체제가 아닌 Ubuntu에서 특히 발생합니다. 서버를 다시 시작하기 위해 포트를 비울 수 있습니까?

답변:


536

더 간단한 해결책은 그냥 입력하십시오 sudo fuser -k 8000/tcp. 포트 8000과 관련된 모든 프로세스가 종료되어야합니다.

편집하다:

osx 사용자의 경우 사용할 수 있습니다 sudo lsof -t -i tcp:8000 | xargs kill -9


23
Mac sudo lsof -i tcp:8000에서는 표시되는 프로세스 ID 를 사용해야 합니다.
— gordonc

따라서 포트가 무엇이든 8000을 블록이 발생한 포트로 대체하십시오.
— Manish Shrivastava

이 오류가 발생하지만 포트의 모든 것을 죽였습니다.
— wanderer0810

57
netstat -ntlp

이런 식으로 표시됩니다.

   Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State           PID/Program name    
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      6599/python         
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.124.1:53        0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN     

이제 Django / Python이 이미 실행중인 포트를 닫으십시오.

kill -9 PID

나의 경우에는

kill -9 6599

이제 Django 앱을 실행하십시오.


이를 위해 net-tools를 설치해야합니다.
— Pooja Khatri

11
ps aux | grep -i manage

after that you will see all process 


ubuntu@ip-10-154-22-113:~/django-apps/projectname$ ps aux | grep -i manage
ubuntu    3439  0.0  2.3  40228 14064 pts/0    T    06:47   0:00 python manage.py runserver project name
ubuntu    3440  1.4  9.7 200996 59324 pts/0    Tl   06:47   2:52 /usr/bin/python manage.py runserver project name
ubuntu    4581  0.0  0.1   7988   892 pts/0    S+   10:02   0:00 grep --color=auto -i manage


kill -9 process id


e.d kill -9 3440


`enter code here`after that :

python manage.py runserver project name

서버가 이미 실행 중일 때 서버를 다시 시작하려고합니까? 첫 번째 포트가 HTTP 포트를 사용하므로 작동하지 않습니다. 다시 실행하기 전에 (적어도 동일한 포트에서 실행) 첫 번째 것을 종료하거나 종료해야합니다.
— 일부 프로그래머 친구

현재 실행중인 인스턴스를 죽였 기 때문에 작동합니다. 동일한 네트워크 포트에서 두 개의 프로그램을 청취 할 수는 없습니다. 따라서 이것은 실제로 문제가 아닌 사실에 대한 해결책입니다.
— 일부 프로그래머 친구

내가 강해 졌다면 미안해 오늘은 조금 심술 rump은 기분이야 : /
— 일부 프로그래머 친구

5

기본적으로 runserver 명령은 포트 8000의 내부 IP에서 개발 서버를 시작합니다.

서버 포트를 변경하려면 명령 줄 인수로 전달하십시오. 예를 들어이 명령은 포트 8080에서 서버를 시작합니다.

python manage.py runserver 8080

1
@StephenRauch, 질문은 WHO가 포트를 사용하고 있는지 묻지 않습니다. 문제는 오류가 발생했다는 것입니다. 이 오류를 해결하는 방법에 대한 솔루션입니다.
— 프레디

OP는 다른 포트에서 서버를 실행할 것을 요구하지 않고 포트 8000에서 서버를 다시 시작하는 방법을 묻습니다
— uclaastro

4

이 명령은 사용하지 않습니다. {sudo lsof -t -i tcp : 8000 | xargs kill -9} 모든 탭이 닫혀 있기 때문에 ...

ps -ef | grep python

kill -9 process_id

ps -ef | grep python (id로 모든 프로세스 표시)

kill -9 11633 (11633은 :-/ bin / python manage.py runserver의 프로세스 ID 임)


2

이것은 Mounir의 답변에 대한 확장입니다. 이 내용을 다루는 bash 스크립트를 추가했습니다. ./scripts/runserver.sh대신 실행하면 ./manage.py runserver정확히 같은 방식으로 작동합니다.

#!/bin/bash

pid=$(ps aux | grep "./manage.py runserver" | grep -v grep | head -1 | xargs | cut -f2 -d" ")

if [[ -n "$pid" ]]; then
    kill $pid
fi

fuser -k 8000/tcp
./manage.py runserver

2

오래된 게시물에 댓글을 달아 죄송하지만 사람들에게 도움이 될 수 있습니다

터미널에 이것을 입력하십시오.

killall -9 python3

컴퓨터에서 실행중인 모든 python3을 종료시키고 모든 포트를 해제합니다. 장고 프로젝트 에서 일할 때 크게 도와주세요 .


1

나에게 이것은 Postman의 API 요청이 내 앱의 디버거 중단 점에 의해 가로 채기 때문에 발생합니다. 앱 서버를 종료하기 전에 Postman에서 요청을 취소하면 처음에는 오류가 발생하지 않습니다.

-> 따라서 다른 프로그램에서 진행중인 모든 요청을 취소하십시오.

macOS에서는 sudo lsof -t -i tcp:8000 | xargs kill -9해결하기 위해 열린 http 요청을 취소하는 것을 잊었을 때 사용 하고 있습니다. error = That port is already in use.또한 완료하면 Postman 앱이 닫히 므로 첫 번째 솔루션이 더 좋습니다.


1

ctl-c 다음에 'fg'를 명령으로 입력하십시오.
커맨드 :
Fg는 백그라운드에서 실행중인 것을 보여줍니다. 그 후 ctl-c가 중지합니다.

fg
ctl-c


0

PS AUX | grep 관리

우분투 3438127.0.0 2.3 40256 14064 pts / 0 T 06:47 0:00 python manage.py runserver

죽이기 -9 3438


2
이 코드 스 니펫은 문제를 해결할 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 실제로 도움이됩니다. 앞으로 독자에게 질문에 대한 답변을 제공하고 있으며 해당 사람들이 귀하의 코드 제안 이유를 모를 수도 있습니다. 설명 주석으로 코드를 복잡하게 만들지 마십시오. 이렇게하면 코드와 설명의 가독성이 떨어집니다!
— rene sep


0

Mac 에서이 문제에 직면하면 활동 모니터를 열고 꽤 많은 파이썬을 강제 실행해야합니다.

여기에 이미지 설명을 입력하십시오


0

lsof -t -i tcp : 8000 | xargs는 -9를 죽인다


0

VSC의 화면 터미널을 사용하는 경우 이미 다른 쉘에서 서버를 실행했기 때문에 오류가 발생했을 수 있습니다.

VSC 터미널 헤더의 + 부호 왼쪽에있는 드롭 박스를 클릭하고 다른 쉘을 선택하고 서버가 이미 실행 중인지 확인하십시오. 해당 서버를 종료하면 다른 서버를 시작할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.