2012-04-09 4 views
2

Ruby를 배우기 시작했습니다. 나는 WEBrick 서버로 작업을 시도했다. ruby index.rb 명령 서버가 시작된 후 그리고 그것을 멈추는 방법? Ctrl + c, Ctrl + X 및 기타를 시도했습니다. 아직도 작동 중입니다. 그런 다음 Ctrl + Z를 누릅니다. Bash는 말했다 : [1]+ Stopped ruby index.rb.하지만 프로세스가 여전히 작동하고 내 포트를 사용하면 서버가 필요합니다. 시스템 모니터에서만 죽일 수 있습니다.Xubuntu의 Terminal에서 Ruby WEBrick 앱을 멈추는 방법

내가 index.rb 프로세스를 종료하기 위해 bash는 사용자에게 필요한 것은 명령 ??

나는 사용자가 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>& 
} 

답변

4

언제나 PID를 지정하여 프로세스를 종료 할 수 있습니다. 프로세스를 종료 할 $ kill -9 <YOUR_PID> :

는 서버 프로세스의 pid는 당신이 사용 후, PID가 첫 번째 열입니다

$ ps a | grep ruby

을 사용할 수 있습니다 얻으려면. 당신이 Ctrl+C로 막을 수없는 이유 서버가 SIGINT 잡기되지

, 즉이다.

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을 즐길 수

!

+0

그러나 트랩이 서버 마운트 후에 있어야하며 작동합니다 ... 감사합니다. –