2012-08-27 259 views
2

我之前正在運行Linux Mint 13,並且剛剛切換到Fedora 17.由於我已經完成切換,因此我不能再停止Webrick。我使用Jetbrains Rubymine,並且啓動服務器工作正常,但是一旦我停止或重新啓動,它就會以某種方式從進程中分離出來,並且在重新啓動計算機之前我無法再使用該端口。我的第一個想法是這是Rubymine的問題,但是當我在控制檯啓動服務器時,它確實是一樣的。我打到ctrl - c停止它(似乎這樣做),但只要我再次在該端口上啓動服務器,它會因爲使用重複的地址而失敗。Webrick不會停止或重新啓動

+0

您運行的是哪個版本的JRuby? – Satish

+0

也檢查出http://stackoverflow.com/questions/5891567/cant-stop-webrick-1-3-1-with-ctrl-c-on-ubuntu-11-04 – Satish

+0

對不起,我是新來堆棧溢出並假設我收到回覆後會收到一封電子郵件。我還沒有看到一個,但我想我會仔細檢查。 @Satish - 我在每個應用上使用Ruby 1.9.2和幾個不同的補丁編號。我的所有應用程序無論使用哪種ruby版本都遇到同樣的問題。它似乎並不是特定於應用程序,例如您提供的鏈接。 (順帶一提) – Sean

回答

1

我在薄荷上有這個錯誤(與你相反,正如我所見) - Ubuntu機器總是通過CTRL + C退出。解決方案,無需重新啓動機器:殺死Webrick進程。通過ps aux | grep rails命令搜索分離服務器進程的PID,然後通過kill -9 <PID>

殺死它在一個行,你可以在你的項目目錄運行此:

kill -9 `cat tmp/pids/server.pid` 

(您也可以設置該命令作爲別名在你的.bash_profile,更容易使用)

或者是否有沒有Webrick進程殺死,無論?

+0

怪異的..我有薄荷13運行,並決定切換到Fedora,因爲我不能再忍受一些錯誤,但我恐怕這會變得更糟。關於你的臨時修復,我之前嘗試過,沒有成功,但使用你的方法似乎工作。我現在可以看到所有正在運行的進程,並能夠殺死它們。快速的問題,但你怎麼用作別名?在我可以運行命令之前,我不必先找到pid嗎?謝謝你的幫助。我希望有人知道問題的根源,因爲這使我堅果 – Sean

+0

如果Webrick正在運行,那麼它的PID在'{APP_ROOT}/tmp/pids/server.pid'文件中,所以你不必看爲它 - 只要服務器正在運行。所以,如果不是'ctrl-c',而是在另一個終端上運行kill命令,它會立即終止Webrick服務器。你可以創建一個別名,所以不用長'kill -9 ...'命令,你只需要輸入'killrails'或其他東西,[就像bash中的其他別名一樣](http://ss64.com/ bash/alias.html),請參閱_「製作別名永久」_部分。 –

+0

對不起,這是如此密集,但它不適合我。我明白如何在bash配置文件中使用別名,但我不理解的部分是通用命令來殺死有問題的進程。以下是我的別名:別名killapp =「kill -9 ./tmp/pids/server.pid」我在應用程序根目錄中運行這個。它告訴我:kill:./tmp/pids/server.pid:參數必須是進程或作業ID。我究竟做錯了什麼?再次感謝你的幫助。 – Sean