2011-06-17 161 views
7

我有一個Ruby腳本,我需要在Linux框中始終運行。我試過nohup ruby ruby.rb&,但它似乎不起作用。在後臺運行Ruby腳本

如何讓腳本在後臺運行?

+0

你需要輸出嗎? – cmwright

+0

不,但是當我做「nohup」時,我想我應該在輸出文件中看到結果,而我不知道。我只是想確保它正在運行。 – donald

+0

那麼當你最初運行命令與&你會得到一個PID? – cmwright

回答

24

看看screen這是一個命令行工具。從

開始
screen 

您將得到一個新的分離的外殼。在那裏開始你的腳本

ruby whatever.rb 

並觀察它運行。然後打到Ctrl - ACtrl - D你應該回到原來的外殼。您可以立即離開ssh會話,腳本將繼續運行。稍後,登錄到您的盒子並輸入

screen -r 

並且您應該回到分離的外殼。

如果您不止一次地使用屏幕,您將不得不通過pid來選擇屏幕會話,這不太舒服。爲了簡化,你可以做

screen -S worker 

啓動會話和

screen -r worker 

恢復它。

3

根據您的需求:

fork do 
    Process.setsid 
    sleep 5 
    puts "In daemon" 
end 
puts "In control script" 

在現實生活中,你將不得不重新打開STDOUT/STDERR。