使用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 pid

TLDR:如果发送
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中列出的过程的一部分(您现在就是这样)。