重启django runserver时如何"清除"端口

Ant*_*mon 68 django

通常,当重新启动Django runserver时,如果我使用相同的端口号,我会得到一个"端口已经在使用中"的消息.随后,我需要每次增加端口号以避免这种情况.

然而,并非所有服务器都是如此,所以我想知道如何在我正在研究的当前系统上实现这一目标?

顺便说一句,该平台是Ubuntu 8.10

Mei*_*ilo 123

我发现这些信息(最初来自KristinnÖrnSigurðsson)来解决我的问题:

要使用-9将其终止,您必须列出所有正在运行的manage.py进程,例如:

ps aux | grep -i manage
Run Code Online (Sandbox Code Playgroud)

如果您已经开始使用许多端口,您将获得类似于此的输出:

14770     8264  0.0  1.9 546948 40904 ?        S    Sep19   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8006
14770    15215  0.0  2.7 536708 56420 ?        S    Sep13   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8001
14770    30144  0.0  2.1 612488 44912 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8000
14770    30282  0.0  1.9 678024 40104 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8002
14770    30592  0.0  2.1 678024 45008 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8003
14770    30743  0.0  2.1 678024 45044 ?        S    Sep18   0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8004
Run Code Online (Sandbox Code Playgroud)

然后你必须为正确的manage.py进程(python manage.py runserver等)选择pid(左边的第二个数字)并执行:

kill -9 pid
Run Code Online (Sandbox Code Playgroud)

对于上面的示例,如果要释放端口8000,则可以执行以下操作:

kill -9 30144
Run Code Online (Sandbox Code Playgroud)


mip*_*adi 40

您收到该消息是因为服务器已在运行(可能在后台).确保终止进程(将其置于前台并按ctrl-c)以停止进程.

  • fg将它带到前台.然后按ctrl + c停止/关闭它. (25认同)
  • ctrl-z将进程放在后台,因此即使服务器仍在运行(在后台),也可以看到命令提示符. (14认同)

abh*_*kar 29

如果该ps aux命令(根据Meilo的回答)未列出您要杀死的进程但显示netstat -np | grep 8004网络活动中的活动端口,请尝试此命令(在Ubuntu上工作).

sudo fuser -k 8004/tcp
Run Code Online (Sandbox Code Playgroud)

其中,8004是您要关闭的端口号.这应该会终止与端口8004相关的所有进程.

  • 在Mac上使用:`sudo lsof -t -i tcp:8000 | xargs kill -9`帽子提示:http://stackoverflow.com/questions/20239232/error-that-port-is-already-in-use (2认同)

小智 14

不,他不是白痴家伙.同样的事情发生在我身上.显然这是一个python UUID进程的错误,在django服务器关闭后连续运行很长时间.

  • 我在豹子里也有同样的问题.我用Ctrl-C关闭它,但仍然阻塞了端口. (2认同)

Ran*_*u R 12

fuser -k 8000/tcp
Run Code Online (Sandbox Code Playgroud)

在终端运行它在ubutu工作.8000是港口.


JGa*_*rdo 9

此错误是由于服务器已在运行.

背景

我正在回答一个更普遍的问题,不像Django那样具体,就像最初的问题一样.那些来自Google的人可以轻松解决问题.

当您需要清除端口时,您需要做的就是这两个步骤

  1. 在终端运行中 fg
  2. 按Control-C(如果在Mac上)

说明

fg将进程带到前台.然后Control-C停止服务器.

在运行角度应用程序时,我实际上遇到了端口8000的问题.我跑的时候遇到了一个错误npm start

在angular-seed@0.0.0启动脚本错误时失败

所以我跑了fg,然后我用Control-C停止了服务器

FG

然后我能够成功运行服务器

npm开始


tha*_*rem 7

键入fg终端以将后台任务调出到前台.

Ctrl+ C关闭/停止正在运行的服务器.


Pat*_*Pat 6

我使用pkill -If 'manage.py'(-I表示交互式,-f不仅仅匹配进程名称).请参见如何使用给定的部分名称终止所有进程?有关pkill的更多信息.


小智 5

sudo lsof -t -i tcp:8000 | xargs kill -9
Run Code Online (Sandbox Code Playgroud)

如果你想释放 8000 端口,而不仅仅是复制命令并粘贴到你的 cmd 中,它会要求输入 sudo 密码。然后你就可以走了。