终止简单的python服务器不会用ctrl + C关闭

时间:2013-11-03 19:28:03

标签: python terminal zsh simplehttpserver

我使用

运行了一个简单的Web服务器
python -m simpleHTTPServer 8888 &.
它开始很好。然后使用ctrl + C尝试终止它,然后我去

http://localhost:8888/ 

并且服务器仍在运行。我做错了吗?

我正在使用zsh作终端,不确定这是否与它有关。

5 个答案:

答案 0 :(得分:7)

这是因为&导致命令在后台运行。启动该过程后,您将获得进程ID。使用该ID,您可以kill进程:

$ python &
[1] 5050
$ kill -15 5050
[1]+  Angehalten              python

如果发送SIGTERM信号(-15)不起作用,您可以使用SIGKILL-9)。

编辑使用SIGTERM代替SIGKILL,请参阅@ starrify的评论。

答案 1 :(得分:0)

CTRL+C发送SIGINT。你应该使用kill -9 pid发送一个kill信号来杀死进程

答案 2 :(得分:0)

我不知道您是否需要&.。但是在大多数shell中(当然包括zsh),符号&表示to start this task in the background,这意味着应用程序实际上没有收到CTRL+C

尝试删除&.,看看会发生什么。

已编辑:请参阅@ RobinKrahl关于如何使用kill向其发送信号来终止该过程的答案。但是,为了终止精细工作流程,我建议使用SIGTERM(信号编号15)而不是SIGKILL(信号编号9)。

答案 3 :(得分:0)

这是因为&amp ;.它现在是一个后台进程,你不能通过ctrl + c杀死它。

因为它是服务器,我建议你使用&amp ;.要杀掉服务器,请执行 - > ps aux | grep simpleHTTPServer找到进程id,然后执行kill -9 pid

答案 4 :(得分:0)

TLDR:如果发送SIGKILL无效,请尝试killall python

我遇到了一个类似的问题,即使我给它SIGKILL后,localhost服务器只会更改为另一个pid。对我来说唯一有用的东西,也许可以作为其他任何遇到这种情况的人的最后手段,只需在bash中运行:killall python