2012-08-12 36 views
0

每當我使用運行在服務器服務器初始化錯誤...必須使用「的ps aux | grep的軌道」每次

rails s 

我得到這個消息:

=> Rails 3.1.0 application starting in development on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
[2012-08-12 19:57:32] INFO WEBrick 1.3.1 
[2012-08-12 19:57:32] INFO ruby 1.9.3 (2012-04-20) [i686-linux] 
[2012-08-12 19:57:32] WARN TCPServer Error: Address already in use - bind(2) 
Exiting 
/home/abhishek/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/utils.rb:85:in  `initialize': Address already in use - bind(2) (Errno::EADDRINUSE) 
from /home/abhishek/.rvm/rubies/ruby-1.9.3- p194/lib/ruby/1.9.1/webrick/utils.rb:85:in `new' 
from /home/abhishek/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/utils.rb:85:in `block in create_listeners' 
from /home/abhishek/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/utils.rb:82:in `each' 
from /home/abhishek/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/utils.rb:82:in `create_listeners' 
from /home/abhishek/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/server.rb:82:in `listen' 
from /home/abhishek/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/server.rb:70:in `initialize' 
from /home/abhishek/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:45:in `initialize' 
from /home/abhishek/.rvm/gems/ruby-1.9.3-p194/gems/rack- 1.3.6/lib/rack/handler/webrick.rb:10:in `new' 
from /home/abhishek/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.3.6/lib/rack/handler/webrick.rb:10:in `run' 
from /home/abhishek/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.3.6/lib/rack/server.rb:265:in `start' 
from /home/abhishek/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.1.0/lib/rails/commands/server.rb:70:in `start' 
from /home/abhishek/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.1.0/lib/rails/commands.rb:54:in `block in <top (required)>' 
from /home/abhishek/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.1.0/lib/rails/commands.rb:49:in `tap' 
from /home/abhishek/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.1.0/lib/rails/commands.rb:49:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

然後,我要使用

ps aux | grep rails 

kill -9 <pid> 

rails s 

我的問題是:

有沒有辦法讓我沒有做到這一點,我可以輕鬆地運行使用

rails s 
每次

服務器..

即使..命令

rails s -p 4000 

作品..

我只是好奇,如果有任何方法我可以每次使用相同的端口...所以我不必每次啓動服務器時都使用不同的端口,因爲這使得我必須重新輸入特定的控制器和動作名稱一次又一次...

+2

你可以'killall -9 rails',但這裏的主要問題是,顯然rails已經在運行,你不知道它 - 是否在系統啓動時啓動?如果是這樣,你爲什麼要重新啓動它?在這種情況下,'/etc/init.d/rails restart'是一個選項(init.d中腳本的確切名稱可能不同,請檢查init.d) – fvu 2012-08-12 14:37:54

+0

如何關閉服務器,任何出口時出現錯誤信息? – PriteshJ 2012-08-12 14:47:28

+0

@fvu當我運行'killall -9 rails'它給出了這個輸出'rails:沒有找到流程' – 2012-08-12 17:20:53

回答

0

當你關閉終端,我建議你先用ctrl+c然後關閉終端

這釋放了服務器使用的端口關閉服務器。

現在當您再次啓動服務器時,您可以使用相同的端口,您不需要使用新的服務器。

如果有時它沒有正確釋放殺死服務器並使用它。

使用killall -9 rails

這樣,你應該能夠使用rails s每次啓動服務器擊殺服務器。

@ Andrei的答案是有用和正確的,但是我覺得應該在需要一次啓動多個服務器時使用,而您希望運行服務器以顯式地在另一個端口上運行。

+0

謝謝你的答案...這正是我需要的......什麼我一直在做錯了,而不是使用'Ctrl c'我使用'Ctrl z',並且我開始使用'Ctrl z'只是因爲一個愚蠢的原因,z比c鍵更接近Ctrl鍵。然後我猜測我忘記了我可以使用Ctrl c並剛開始使用'z'而不是...謝謝.. – 2012-08-13 00:20:16

+0

ctrl + z只是停止進程就像在暫停狀態導致問題,很高興它幫助。 – PriteshJ 2012-08-13 04:43:18

1

當您運行'rails s'時,默認情況下它將始終在端口3000上啓動服務器。因此,如果您已經有一臺服務器運行其可能運行在端口3000上。您可以通過傳遞'-p'選項來指定不同的端口來啓動第二臺(第三臺,第四臺等)服務器。

rails s -p 4000 
+0

這個工程,我試過不同的端口號,他們都工作..謝謝.. – 2012-08-12 17:25:32

相關問題