如何closurespython simpleHTTPserver?

所以我试图学习D3, 维基build议

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

python -m SimpleHTTPServer 8888 &

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

有没有比使用kill <pid>更好的closures方法? 这似乎是一个小工作的大锤子。

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

FWIW: ctrl+c给出大概10行回溯,抱怨中断。

kill -3 <pid>在另一个窗口“Python意外退出”中给出Finder警告。

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

你只是发送信号的过程。 kill是发送这些信号的命令。

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

你想发送什么信号到你的服务器来结束它?

如果你已经启动了服务器

 python -m SimpleHTTPServer 8888 

那么你可以按ctrl + cclosures服务器。

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

 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。

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

fuser -k 8888/tcp

这里8888是由python打开的tcp端口。

希望现在清楚。

或者你可以kill %1 ,这会杀死放在后台的第一个作业

 MYPORT=8888; kill -9 `ps -ef |grep SimpleHTTPServer |grep $MYPORT |awk '{print $2}'` 

这就对了 !!

解释命令行:

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

  • grep SimpleHTTPServer :属于“SimpleHTTPServer”的过滤程序

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

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

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

这似乎是矫枉过正,但你可以使用主pipe来启动和停止你的simpleHttpserver,并将其作为服务完全pipe理。

或者只是按照build议在前台运行它,并用控制c杀死它

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

此解决scheme为我工作: https : //stackoverflow.com/a/22533929/573216

按ctrl + c一次(等待追溯),然后再次按ctrl + c做了我的伎俩:)