通常,当重新启动Django runserver时,如果我使用相同的端口号,我会得到一个"端口已经在使用中"的消息.随后,我需要每次增加端口号以避免这种情况.
然而,并非所有服务器都是如此,所以我想知道如何在我正在研究的当前系统上实现这一目标?
顺便说一句,该平台是Ubuntu 8.10
我发现这些信息(最初来自KristinnÖrnSigurðsson)来解决我的问题:
要使用-9将其终止,您必须列出所有正在运行的manage.py进程,例如:
ps aux | grep -i manage
如果您已经开始使用许多端口,您将获得类似于此的输出:
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
然后你必须为正确的manage.py进程(python manage.py runserver等)选择pid(左边的第二个数字)并执行:
kill -9 pid
对于上面的示例,如果要释放端口8000,则可以执行以下操作:
kill -9 30144
您收到该消息是因为服务器已在运行(可能在后台).确保终止进程(将其置于前台并按ctrl-c)以停止进程.
如果该ps aux
命令(根据Meilo的回答)未列出您要杀死的进程但显示netstat -np | grep 8004
网络活动中的活动端口,请尝试此命令(在Ubuntu上工作).
sudo fuser -k 8004/tcp
其中,8004是您要关闭的端口号.这应该会终止与端口8004相关的所有进程.
不,他不是白痴家伙.同样的事情发生在我身上.显然这是一个python UUID进程的错误,在django服务器关闭后连续运行很长时间.
fuser -k 8000/tcp
在终端运行它在ubutu工作.8000
是港口.
我正在回答一个更普遍的问题,不像Django那样具体,就像最初的问题一样.那些来自Google的人可以轻松解决问题.
当您需要清除端口时,您需要做的就是这两个步骤
在终端运行中 fg
按Control-C(如果在Mac上)
fg将进程带到前台.然后Control-C停止服务器.
在运行角度应用程序时,我实际上遇到了端口8000的问题.我跑的时候遇到了一个错误npm start
所以我跑了fg
,然后我用Control-C停止了服务器
然后我能够成功运行服务器
键入fg
终端以将后台任务调出到前台.
按Ctrl+ C关闭/停止正在运行的服务器.
我使用pkill -If 'manage.py'
(-I
表示交互式,-f
不仅仅匹配进程名称).请参见如何使用给定的部分名称终止所有进程?有关pkill的更多信息.