2

私はRubyを学び始めました。WEBrickサーバーで作業してみました。ruby index.rbコマンドサーバーの起動後。そしてそれを止める方法は?Ctrl + c、Ctrl+Xなどを試してみました。それはまだ機能しています。次に、Ctrl+Zを押しました。Bashは次のように述べています。[1]+ Stopped ruby index.rb.しかし、プロセスはまだ機能しており、私のポートを使用して、サーバーが必要です。システムモニターからしか殺せません。

index.rbプロセスを強制終了するためにbashでユーザーに必要なコマンドは何ですか?

Ctrl + Cを使用すると、エラーが発生します。

[2012-04-09 19:44:10] ERROR Interrupt: 
/usr/lib/ruby/1.8/webrick/server.rb:91:in `select'

PSアプリケーションは非常にシンプルです(ウィキブックスから):

   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

1 に答える 1

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

于 2012-04-09T16:03:00.297 に答える