d3.js-如何关闭python simpleHTTPserver?

因此,我正在尝试学习d3,Wiki建议

要在本地查看示例,您必须具有本地Web服务器。 任何   网络服务器可以工作; 例如,您可以运行Python的内置   服务器:

kill <pid>

太棒了…只是现在我有一台服务器正在运行…但是在某个时候我想我应该再次关闭它。

是否有比使用kill <pid>更好的关闭它的方法? 这似乎有点像一个小任务。

(我正在运行Mac OS 10.6.8(雪豹))

FWIW:kill <pid>提供了大约10行回溯,抱怨被中断。

kill <pid>在单独的窗口“ Python意外退出”中发出Finder警告。

默认kill <pid>kill -15 <pid>相对干净(且简单)。

Suz asked 2019-10-09T02:50:11Z
8个解决方案
32 votes

您只是向流程发送信号。 是发送这些信号的命令。

键盘命令Ctrl + C( + C)发送SIGINT,kill -9发送SIGKILL,kill -15发送SIGTERM。

您想发送什么信号到您的服务器以终止它?

xbello answered 2019-10-09T02:50:39Z
29 votes

如果您已使用以下命令启动服务器

python -m SimpleHTTPServer 8888 

然后您可以按ctrl + c来关闭服务器。

但是,如果您使用以下命令启动服务器

python -m SimpleHTTPServer 8888 &

要么

python -m SimpleHTTPServer 8888 & disown

您必须先查看列表才能终止进程,

运行命令

ps

要么

ps aux | less

它会向您显示一些正在运行的过程,例如..

PID TTY          TIME CMD
7247 pts/3     00:00:00 python
7360 pts/3     00:00:00 ps
23606 pts/3    00:00:00 bash

您可以从此处获取PID。 并通过运行此命令杀死该进程。

kill -9 7247

这里7247是python id。

同样由于某种原因,如果端口仍然打开,则可以使用此命令关闭端口

fuser -k 8888/tcp

8888是python打开的tcp端口。

希望现在清除。

codersaif answered 2019-10-09T02:52:23Z
14 votes

或者您可以执行kill %1,这将杀死后台执行的第一项工作

Lachezar answered 2019-10-09T02:52:51Z
13 votes
MYPORT=8888; 
kill -9 `ps -ef |grep SimpleHTTPServer |grep $MYPORT |awk '{print $2}'`

这就对了 !!

解释命令行:

  • kill -9 <PID>:列出所有进程。

  • kill -9 <PID>:属于“ SimpleHTTPServer”的过滤器进程

  • kill -9 <PID>:再次过滤过程属于端口为MYPORT的“ SimpleHTTPServer”(即:MYPORT = 8888)

  • kill -9 <PID>:打印结果的第二列,即PID(进程ID)

  • kill -9 <PID>:使用适当的PID强制终止进程。

Abdennour TOUMI answered 2019-10-09T02:54:02Z
5 votes

原来有一个关机,但这必须从另一个线程启动。

此解决方案为我工作:[https://stackoverflow.com/a/22533929/573216]

dirkk0 answered 2019-10-09T02:54:37Z
3 votes

似乎有些大材小用,但是您可以使用超级用户来启动和停止您的simpleHttpserver,并完全将其作为服务进行管理。

或者只是按照建议在前台运行它,然后用控件c杀死它

dm03514 answered 2019-10-09T02:55:13Z
3 votes

当您将程序作为后台进程运行时(在其后添加jobs),例如:

python -m SimpleHTTPServer 8888 &

如果终端窗口仍然打开,则可以执行以下操作:

jobs

获取正在运行的Shell进程中所有后台作业的列表。

它可能看起来像这样:

$ jobs
[1]+  Running                 python -m SimpleHTTPServer 8888 &

要取消作业,可以执行jobs取消作业“ [1]”,也可以执行fg将作业置于前台(fg),然后使用ctrl-c取消作业。 (只需输入fg,会将最后一个后台进程置于前台)。

对于SimpleHTTPServer,似乎jobsfg + ctrl-c好。 至少它不反对kill命令。

上面的代码已经在Mac OS上进行了测试,但是据我所记得,它在Linux上也一样。

更新:为使此工作正常,必须直接从命令行启动Web服务器(详细说明第一个代码段)。 使用脚本启动它将使该过程超出jobs的范围。

Erk answered 2019-10-09T02:56:28Z
0 votes

一次按ctrl + c(等待回溯),然后再次按ctrl + c对我有用:)

small_data88 answered 2019-10-09T02:56:56Z
translate from https://stackoverflow.com:/questions/12647196/how-do-i-shut-down-a-python-simplehttpserver