2013-11-27 28 views
110

當我嘗試Django的重新啓動其顯示消息:錯誤:該端口已被使用。

這個端口已經運行....

這個問題專門在ubunut 10.x中並不是所有的OS.how我可能會在當前系統上實現這一點,我正在努力? 你能建議我嗎?

回答

286

更簡單的解決方案只需輸入sudo fuser -k 8000/tcp。 這應該殺死端口相關聯的8000

編輯的所有進程:

的OSX用戶可以使用sudo lsof -t -i tcp:8000 | xargs kill -9

+2

太棒了!真的很簡單:)謝謝 –

+11

在mac上,你需要使用'sudo lsof -i tcp:8000',然後殺掉出現的進程id。 – gordonc

+2

未知的選項:克 – 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

所以你嘗試重新啓動服務器,而一個已經在運行?這將不起作用,因爲第一個將使用HTTP端口。在嘗試再次運行之前(至少在同一個端口上運行它),您必須終止或終止第一個。 –

+0

其工作正常,我已檢查它。 –

+0

它正在工作,因爲你殺死了當前正在運行的實例,這就是我說的你必須做的事情。你不能讓兩個程序在同一個網絡端口上偵聽,就像那樣簡單。所以這是一個解決問題的辦法,這不是一個真正的問題,只是一個事實。 –

2

這是穆尼爾的答案擴展。我已經添加了一個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 
17
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應用程序。

+0

最好的!容易記住 !!高效! –

+1

感謝和繼續分享:) –

1

我們不使用此命令{sudo lsof -t -i tcp:8000 | xargs kill -9}因爲它關閉所有標籤...您應該使用到

ps -ef | grep python

kill -9 process_id

ps -ef | grep的蟒蛇(顯示與ID的所有進程)

殺-9 11633 (11633是一個進程ID: - /斌/ Python的manage.py runserver命令)

0

的ps aux | grep的管理

Ubuntu的3438 127.0.0 2.3 40256 14064點/; 0 T 06:47 0:00蟒蛇manage.py runserver命令

殺-9 3438

+0

雖然這個代碼片斷可以解決的問題,[包括說明](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – rene

相關問題