如何关闭python simpleHTTPserver?

Suz*_*Suz 61 python simplehttpserver d3.js

所以我正在努力学习d3,wiki建议这样做

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

python -m SimpleHTTPServer 8888 &

很棒...只是现在我有一台服务器正在运行...但在某些时候我想我应该再次关闭它.

关闭它比使用更好的方法kill <pid>吗?对于一份小工作来说,这似乎是一件大事.

(我正在运行Mac OS 10.6.8(Snow Leopard))

FWIW:ctrl+c提供大约10行追溯,抱怨被打断.

kill -3 <pid> 在一个单独的窗口中发出一个Finder警告'Python意外退出'.

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

xbe*_*llo 37

您只是向进程发送信号.kill是发送这些信号的命令.

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

您想将什么信号发送到服务器以结束它?

  • 我想发送适当的信号,以便优雅地退出,而不会在系统或屏幕上留下垃圾.在`ctrl + c`的情况下,我得到大约10行追溯,抱怨它被打断了.这看起来像是在不关闭系统的情况下拔插头. (5认同)

cod*_*aif 31

如果你已经启动了服务器

python -m SimpleHTTPServer 8888 
Run Code Online (Sandbox Code Playgroud)

然后你可以按ctrl + c来关闭服务器.

但是如果你已经启动了服务器

python -m SimpleHTTPServer 8888 &
Run Code Online (Sandbox Code Playgroud)

要么

python -m SimpleHTTPServer 8888 & disown
Run Code Online (Sandbox Code Playgroud)

你必须先看清单才能杀死进程,

运行命令

ps
Run Code Online (Sandbox Code Playgroud)

要么

ps aux | less
Run Code Online (Sandbox Code Playgroud)

它会告诉你一些这样的运行过程..

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
Run Code Online (Sandbox Code Playgroud)

你可以从这里得到PID.并通过运行此命令杀死该进程..

kill -9 7247
Run Code Online (Sandbox Code Playgroud)

这里7247是python id.

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

fuser -k 8888/tcp

这里8888是python打开的tcp端口.

希望现在清楚.


Lac*_*zar 14

或者你可以做kill %1,这将杀死背景中的第一份工作

  • 您不确定它是否是第一个后台工作.它并没有真正回答这个问题,因为使用'kill'已经存在问题. (2认同)

Abd*_*UMI 13

MYPORT=8888; 
kill -9 `ps -ef |grep SimpleHTTPServer |grep $MYPORT |awk '{print $2}'`
Run Code Online (Sandbox Code Playgroud)

这就对了 !!

解释命令行:

  • ps -ef :列出所有进程.

  • grep SimpleHTTPServer :过滤进程属于"SimpleHTTPServer"

  • grep $MYPORT :过滤再次进程属于"SimpleHTTPServer",其中端口是MYPORT(.ie:MYPORT = 8888)

  • awk '{print $2}' :打印结果的第二列,即PID(进程ID)

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


dir*_*kk0 7

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

这个解决方案对我有用https : //stackoverflow.com/a/22533929/573216

  • 感谢您是唯一指出以编程方式关闭服务器的答案。这应该是投票率最高的答案之一! (2认同)

Erk*_*Erk 5

当您将程序作为后台进程运行时(通过&在它后面添加一个),例如:

python -m SimpleHTTPServer 8888 &
Run Code Online (Sandbox Code Playgroud)

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

jobs
Run Code Online (Sandbox Code Playgroud)

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

它可能看起来像这样:

$ jobs
[1]+  Running                 python -m SimpleHTTPServer 8888 &
Run Code Online (Sandbox Code Playgroud)

要终止工作,您可以执行终止kill %1工作“[1]”,或者执行fg %1将工作置于前台(fg)然后使用 ctrl-c 终止它。(只需输入即可fg将最后一个后台进程置于前台)。

关于 SimpleHTTPServer,它似乎kill %1fg+ ctrl-c更好。至少它不会用 kill 命令抗议。

以上已经在 Mac OS 中测试过,但据我所知,它在 Linux 中的工作原理是一样的。

更新:为此,必须直接从命令行启动 Web 服务器(逐字第一个代码片段)。使用脚本来启动它会使进程超出jobs.


归档时间:

查看次数:

80389 次

最近记录:

8 年,1 月 前