所以我正在尝试学习d3,wiki建议
要在本地查看示例,您必须拥有本地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>
相对干净(简单)。
答案 0 :(得分:35)
您只是向流程发送信号。 kill
是发送这些信号的命令。
键盘命令Ctrl + C(⌃
+ C
)发送SIGINT,kill -9
发送SIGKILL,kill -15
发送SIGTERM。
您希望向服务器发送什么信号以结束它?
答案 1 :(得分:30)
如果您已使用
启动服务器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端口。
希望现在明白。
答案 2 :(得分:14)
或者您可以执行kill %1
,这会杀死第一个放在后台的作业
答案 3 :(得分:13)
MYPORT=8888;
kill -9 `ps -ef |grep SimpleHTTPServer |grep $MYPORT |awk '{print $2}'`
就是这样!!
ps -ef
:列出所有流程。
grep SimpleHTTPServer
:过滤进程属于&#34; SimpleHTTPServer&#34;
grep $MYPORT
:再次过滤进程属于&#34; SimpleHTTPServer&#34;其中港口是MYPORT(.i.e:MYPORT = 8888)
awk '{print $2}'
:打印结果的第二列,即PID(进程ID)
kill -9 <PID>
:使用适当的PID强制终止进程。
答案 4 :(得分:5)
结果是关闭,但必须从另一个线程启动。
答案 5 :(得分:3)
看起来有点矫枉过正,但您可以使用supervisor启动和停止simpleHttpserver,并将其完全作为服务进行管理。
或者只是按照建议在前台运行它并用控制c
将其杀死答案 6 :(得分:3)
当您将程序作为后台进程运行时(通过在其后添加var2
),例如:
process.on('uncaughtException', function(err) {
// process.whatever doesn't contain any active variables
});
如果终端窗口仍处于打开状态,则可以执行以下操作:
&
获取正在运行的shell进程中所有后台作业的列表。
它看起来像这样:
python -m SimpleHTTPServer 8888 &
要终止作业,可以执行jobs
终止作业“ [1]”,也可以执行$ jobs
[1]+ Running python -m SimpleHTTPServer 8888 &
将作业置于前台(fg),然后使用ctrl-c执行杀了它。 (只需输入kill %1
,会将最后一个后台进程置于前台。)
对于SimpleHTTPServer,似乎fg %1
比fg
+ ctrl-c好。至少它不反对kill命令。
以上内容已在Mac OS上进行了测试,但据我所知,它在Linux中的工作原理也是如此。
更新:为此,必须直接从命令行启动Web服务器(详细说明第一个代码段)。使用脚本启动该脚本将使该过程超出kill %1
的范围。
答案 7 :(得分:0)
按一次ctrl + c(等待追踪),然后再按ctrl + c为我做了窍门:)
答案 8 :(得分:0)
这是另一种解决方案。
假设你已经使用这个命令启动了服务器 -
python3 -m http.server 7800
要终止该进程,请使用 -
pkill -9 -f 'python3 -m http.server 7800
就是这样。