Capistrano的任務啓動後臺進程
namespace :service do
desc "start daemontools (svscan/supervise/svscanboot)"
task :start, :roles => :app do
sudo "svscanboot&"
end
end
現在,這並不工作:svscanboot過程根本就不運行。 這幫我找到sleep
:https://github.com/defunkt/resque/issues/284 其他來源指出我nohup
,redirection
和pty => true
,所以我嘗試了所有這些。
run "nohup svscanboot >/tmp/svscanboot.log 2>&1 &" # NO
run "(svscanboot&) && sleep 1" # NO
run "(nohup svscanboot&) && sleep 1" # YES!
現在,有誰能向我解釋爲什麼我需要睡眠聲明和nohup有什麼區別嗎? 爲了記錄所有上述運行同樣好,如果從用戶shell運行,問題只在capistrano的上下文中。
感謝
'nohup'確保您的命令在shell終止後收到'SIGHUP'信號時不會終止。不過,我也很好奇爲什麼睡眠命令會有所作爲。 – Graeme
睡眠對我的世界也有影響。 Capistrano這麼簡單的任務爲何如此驚人地困難,這很神祕。 – cbmanica
我看到相同的行爲。並想知道同樣的事情。 – aslakjo