使用ctrl+;终止简单python服务器不会关闭;C
我使用使用ctrl+;终止简单python服务器不会关闭;C,python,terminal,zsh,simplehttpserver,Python,Terminal,Zsh,Simplehttpserver,我使用 python -m simpleHTTPServer 8888 &. 开头不错。然后使用ctrl+C尝试终止它,我转到 http://localhost:8888/ 服务器仍在运行。我做错什么了吗 我正在使用zsh作为终端,不确定这是否与它有关。CTRL+C发送SIGINT。您应该使用kill-9pid发送终止信号以终止进程这是因为&导致命令在后台运行。启动流程后,您将获得流程id。使用该id,您可以kill流程: $ python & [1] 5050 $ kil
python -m simpleHTTPServer 8888 &.
开头不错。然后使用ctrl+C尝试终止它,我转到
http://localhost:8888/
服务器仍在运行。我做错什么了吗
我正在使用zsh作为终端,不确定这是否与它有关。
CTRL+C
发送SIGINT
。您应该使用kill-9pid
发送终止信号以终止进程这是因为&
导致命令在后台运行。启动流程后,您将获得流程id。使用该id,您可以kill
流程:
$ python &
[1] 5050
$ kill -15 5050
[1]+ Angehalten python
如果发送SIGTERM
信号(-15
)无效,可以使用SIGKILL
(-9
)
编辑为使用
SIGTERM
而不是SIGKILL
,请参阅@starrify的评论。我不知道您是否需要&。
这里。但是,在大多数shell(当然包括zsh)中,符号&
表示在后台启动此任务,这意味着应用程序实际上没有收到您的CTRL+C
尝试删除&.
,看看会发生什么
编辑:有关如何通过使用kill
向@RobinKrahl发送信号来终止进程,请参见@RobinKrahl的答案。然而,对于终止精细加工过程,我建议使用SIGTERM
(信号号15)而不是SIGKILL
(信号号9)。这是因为&。它现在是一个后台进程,不能通过ctrl+c终止
由于它是服务器,我建议您使用&。要关闭服务器,请执行->ps aux | grep simpleHTTPServer以查找进程id,然后执行kill-9 pidTLDR:如果发送SIGKILL
无效,作为最后的手段,请尝试killall python
我遇到了一个类似的问题,本地主机服务器会简单地更改为另一个pid,即使在我给它一个SIGKILL
之后。对我来说唯一有效的方法,也可能是其他任何经历过这种情况的人的最后手段,就是简单地在bash中运行:killall-python
。+1ed,然后取消。我们不能先试试像SIGTERM这样的软东西吗?SIGKILL在某种程度上是野蛮的,尽管在这种情况下它可能是完全正确的。难道不可能将fg
导入python,然后按住ctrl-c键吗?-1因为实际上没有SIGINT
发送到OP的进程。zomg!对不起,我应该仔细读一读,我甚至没有看到声明结尾的那一点。抱歉很抱歉,StackOverflow阻止我取消否决票>\n这样做会让我得到501 5200 1141 0 2:42 pm ttys002 0:00.00 grep simpleHTTPServer。是否更新了“501 5200 1141 0”所有单独的处理程序。使用ps aux而不是ps-ef。第一个数字是pid。此外,您应该在输出中查找您的命令。现在看来服务器已经被杀死了。当您执行grep时,该命令也是ps aux output中列出的过程的一部分(您现在就是这样)。