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.