How do I shut down a python simpleHTTPserver?
所以我正在努力学习d3,wiki建议这样做
To view the examples locally, you must have a local web server. Any
web server will work; for example you can run Python's built-in
server:
python -m SimpleHTTPServer 8888 &
很棒...只是现在我有一台服务器正在运行...但在某些时候我想我应该再次关闭它。
关闭它比使用
(我正在运行Mac OS 10.6.8(Snow Leopard))
FWIW:
默认的
您只是向进程发送信号。
键盘命令Ctrl + C(
您想将什么信号发送到服务器以结束它?
如果你已经启动了服务器
1 | python -m SimpleHTTPServer 8888 |
然后你可以按ctrl + c来关闭服务器。
但是如果你已经启动了服务器
1 | python -m SimpleHTTPServer 8888 & |
要么
1 | python -m SimpleHTTPServer 8888 & disown |
你必须先看清单才能杀死进程,
运行命令
1 | ps |
要么
1 | ps aux | less |
它会告诉你一些这样的运行过程..
1 2 3 4 | 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。并通过运行此命令杀死该进程..
1 | kill -9 7247 |
这里7247是python id。
此外,由于某种原因,如果端口仍然打开,您可以使用此命令关闭端口
<5233>
这里8888是python打开的tcp端口。
希望现在清楚。
或者你可以做
1 2 | MYPORT=8888; kill -9 `ps -ef |grep SimpleHTTPServer |grep $MYPORT |awk '{print $2}'` |
这就对了 !!
解释命令行:
-
ps -ef :列出所有进程。 -
grep SimpleHTTPServer :属于"SimpleHTTPServer"的过滤进程 -
grep $MYPORT :再次过滤进程属于"SimpleHTTPServer",其中端口为MYPORT(.i.e:MYPORT = 8888) -
awk '{print $2}' :打印结果的第二列,即PID(进程ID) -
kill -9 :使用适当的PID强制终止进程。
结果是关闭,但必须从另一个线程启动。
这个解决方案对我有用:https://stackoverflow.com/a/22533929/573216
当您将程序作为后台进程运行时(通过在其后添加
1 | python -m SimpleHTTPServer 8888 & |
如果终端窗口仍然打开,您可以执行以下操作:
1 | jobs |
获取正在运行的shell进程中的所有后台作业的列表。
它可能看起来像这样:
1 2 | $ jobs [1]+ Running python -m SimpleHTTPServer 8888 & |
要杀死一个作业,你可以执行
对于SimpleHTTPServer,似乎
以上内容已在Mac OS中测试过,但据我记忆,它在Linux中的工作原理相同。
更新:要使其正常工作,必须直接从命令行启动Web服务器(逐字表示第一个代码段)。使用脚本启动它会使进程无法访问
看起来有点矫枉过正,但你可以使用supervisor启动和停止simpleHttpserver,并将其作为服务完全管理。
或者只是按照建议在前台运行它并用控制c杀死它
点击ctrl + c一次(等待追溯),然后再次点击ctrl + c为我做了诀窍:)