我开始学习Ruby。我尝试使用WEBrick服务器。 ruby index.rb
命令服务器启动后。以及如何阻止它?我尝试了Ctrl + c,Ctrl + X等。它仍然有效。然后我按下Ctrl + Z. Bash说:[1]+ Stopped ruby index.rb.
但是进程仍在工作,使用我的端口,需要服务器。我只能从系统监视器中删除它。
我需要用什么命令在bash中杀死index.rb进程??
当我使用Ctrl + C时,出现错误:
[2012-04-09 19:44:10] ERROR Interrupt:
/usr/lib/ruby/1.8/webrick/server.rb:91:in `select'
P.S。应用程序非常简单(来自WikiBooks):
require 'webrick'
server = WEBrick::HTTPServer.new(:Port=>8080)
server.mount_proc('/'){ |req, resp|
File.open('notepad.txt', 'w'){ |f| f.write(req.query["text"]) } if req.query["text"]
resp['Content-Type'] = 'text/html'
resp.body = %& <html><body><center><form method="post">
<textarea name="text" rows="4" cols="40">#{IO.read('notepad.txt')}</textarea><br/>
<input type="submit" name="update" value="save"/>
</form></center></body></html></nowiki>&
}
答案 0 :(得分:4)
您可以通过指定PID来终止进程。
要从服务器进程获取pid,您可以使用
$ ps a | grep ruby
PID
是第一列,在此之后使用:$ kill -9 <YOUR_PID>
来杀死进程。
您的服务器未捕获SIGINT
,这就是您无法使用Ctrl+C
停止服务的原因。
将脚本更改为此
require 'webrick'
server = WEBrick::HTTPServer.new(:Port=>8080)
trap 'INT' do server.shutdown end
server.mount_proc('/'){ |req, resp|
File.open('notepad.txt', 'w'){ |f| f.write(req.query["text"]) } if req.query["text"]
resp['Content-Type'] = 'text/html'
resp.body = %& <html><body><center><form method="post">
<textarea name="text" rows="4" cols="40">#{IO.read('notepad.txt')}</textarea><br/>
<input type="submit" name="update" value="save"/>
</form></center></body></html></nowiki>&
}
server.start
享受Ctrl+C
!