2013-11-27 13 views
110

gdy próbuję Django wznawiania jej przesłanie wskazujące:Błąd: ten port jest już w użyciu.

port ten jest już uruchomiony ....

ten problem specjalnie na ubunut 10.x nie wszystko OS.how mogę to osiągnąć na obecnym systemie, Pracuję nad? czy możesz mnie zasugerować?

Odpowiedz

286

Bardziej proste rozwiązanie po prostu wpisz sudo fuser -k 8000/tcp. To powinno zabić wszystkie procesy związane z portem 8000.

EDIT:

Dla użytkowników OSX można użyć sudo lsof -t -i tcp:8000 | xargs kill -9

+2

Świetny !!!!naprawdę bardzo proste :) Dzięki –

+11

Na komputerze Mac musisz użyć 'sudo lsof -i tcp: 8000', a następnie zabić identyfikatory procesów, które się pojawiają. – gordonc

+2

Nieznana opcja: k – thatzprem

8
ps aux | grep -i manage 

after that you will see all process 


[email protected]:~/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 
+0

Więc spróbuj ponownie uruchomić serwer, natomiast jeden już działa? To nie zadziała, ponieważ pierwszy będzie korzystał z portu HTTP. Musisz zabić lub zakończyć pierwszy, zanim spróbujesz ponownie uruchomić (przynajmniej uruchom go na tym samym porcie). –

+0

jego działa dobrze, mam to sprawdzić. –

+0

Działa, ponieważ zabiłeś działającą instancję, co właśnie powiedziałem, że musisz zrobić. Nie możesz mieć dwóch programów nasłuchujących na tym samym porcie sieciowym, to takie proste. Jest to więc rozwiązanie problemu, który nie jest tak naprawdę problemem, tylko fakt. –

2

Jest to ekspansja na odpowiedź Mounir jest. Dodałem skrypt bash, który obejmuje to za Ciebie. Po prostu uruchom ./scripts/runserver.sh zamiast ./manage.py runserver i będzie działać dokładnie w ten sam sposób.

#!/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 
17
netstat -ntlp 

To pokaże coś takiego.

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  

Teraz zamknij port, w którym już działa Django/Python, zabijając związany z nim proces.

kill -9 PID 

w moim przypadku

kill -9 6599 

Teraz uruchom aplikację Django.

+0

Najlepszy !! Łatwe do zapamiętania !! Wydajny !! –

+1

Dzięki i udostępniajcie dalej :) –

1

Nie używamy tego polecenia {sudo lsof -t -i tcp: 8000 | xargs kill -9} Ponieważ jest zamknięty wszystkie karty ... Powinieneś używać do:

ps -ef | grep python

kill -9 process_id

ps -ef | pyton grep (zobacz wszystkie proces z id)

zabitych -9 11633 (11633 jest identyfikatorem proces: -/bin/pytona uruchomieniowego manage.py)

0

ps aux | grep zarządzać

ubuntu 3438 127.0.0 2,3 40256 14064 pkt/0 T 06:47 00:00 python manage.py runserver

kill -9 3438

+0

Podczas gdy ten fragment kodu może rozwiązać pytanie, [w tym wyjaśnienie] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-ans -answers) naprawdę pomaga poprawić jakość Twojego posta. Pamiętaj, że odpowiadasz na pytanie przeznaczone dla czytelników w przyszłości, a te osoby mogą nie znać powodów sugestii dotyczących kodu. Proszę również starać się nie tłumić kodu za pomocą komentarzy wyjaśniających, co zmniejsza czytelność zarówno kodu, jak i objaśnień! – rene

Powiązane problemy