错误:该端口已在使用中。

时间:2013-11-27 10:00:43

标签: python django

当我尝试django重启其显示消息时:

此端口已在运行....

这个问题特别针对ubunut 10.x而不是所有OS.how我可能会在我正在进行的当前系统上实现这一点吗?  你能建议我吗?

16 个答案:

答案 0 :(得分:413)

更简单的解决方案只需键入sudo fuser -k 8000/tcp即可。 这应该会终止与端口8000相关的所有进程。

编辑:

对于osx用户,您可以使用sudo lsof -t -i tcp:8000 | xargs kill -9

答案 1 :(得分:38)

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应用程序。

答案 2 :(得分:10)

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

答案 3 :(得分: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是进程ID: - / bin / python manage.py runserver)

答案 4 :(得分:3)

很抱歉在旧帖子中发表评论,但这可能会对人们有所帮助

只需在您的终端上输入

killall -9 python3

它将杀死计算机上运行的所有python3,并释放所有端口。在 Django 项目中工作的时间对我很有帮助。

答案 5 :(得分: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

答案 6 :(得分:2)

默认情况下,runserver命令在内部IP的端口8000上启动开发服务器。

如果要更改服务器的端口,请将其作为命令行参数传递。例如,此命令在端口8080上启动服务器:

python manage.py runserver 8080

答案 7 :(得分:1)

lsof -t -i tcp:8000 | xargs杀死-9

答案 8 :(得分:1)

单击屏幕快照中的箭头,找到已经运行Django服务器的bash。您收到此消息是因为您的服务器已经在运行,并且您尝试重新启动服务器。

enter image description here

答案 9 :(得分:0)

ps aux | grep manage

ubuntu 3438 127.0.0 2.3 40256 14064 pts / 0 T 06:47 0:00 python manage.py runserver

杀死-9 3438

答案 10 :(得分:0)

似乎IDE,VSCode,Puppeteer,nodemon,express等导致了此问题,您在后台运行了一个进程,或者只是关闭了调试区域[浏览器,终端等]或其他任何东西,无论如何,我有之前回答了同样的问题 这就是link

https://stackoverflow.com/a/49797588/2918720

答案 11 :(得分:0)

对我来说,发生这种情况是因为我的应用程序中的调试器断点拦截了Postman中的API请求,从而使请求挂起。如果我在终止应用服务器之前在Postman中取消了该请求,则该错误不会首先发生。

->因此,请尝试取消您在其他程序中发出的所有打开请求。

在macOS上,当我忘记取消打开的http请求以解决sudo lsof -t -i tcp:8000 | xargs kill -9时,我一直在使用error = That port is already in use.,这也完全关闭了我的Postman应用程序,这就是为什么我的第一个解决方案更好的原因

答案 12 :(得分:0)

在ctl-c之后键入'fg'作为命令。
命令:
Fg将显示哪个正在后台运行。之后,ctl-c将停止它。

  

fg
  ctl-c

答案 13 :(得分:0)

如果您在Mac中遇到此问题,只需打开活动监视器并强制使用python,然后重试

enter image description here

答案 14 :(得分:0)

如果您正在使用VSC的屏幕终端,则该错误可能是由于您已经在其他shell中运行服务器这一事实造成的。

只需单击VSC终端标题中+号左侧的下拉框,然后选择其他外壳程序,然后检查服务器是否已在此处运行。退出该服务器,您就可以启动另一个服务器了。

答案 15 :(得分:0)

单击屏幕快照中的箭头,找到已经运行Django服务器的bash。您收到此消息是因为您的服务器已经在运行,并且您尝试重新启动服务器。

enter image description here