我使用
运行了一个简单的Web服务器python -m simpleHTTPServer 8888 &.
它开始很好。然后使用ctrl + C尝试终止它,然后我去
http://localhost:8888/
并且服务器仍在运行。我做错了吗?
我正在使用zsh作终端,不确定这是否与它有关。
答案 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
。