uruchomienie procesu w tle w zadaniu capistrano
zadanie capistrano
namespace :service do
desc "start daemontools (svscan/supervise/svscanboot)"
task :start, :roles => :app do
sudo "svscanboot&"
end
end
Teraz to nie działa: proces svscanboot po prostu nie działa. To pomogło mi znaleźćsleep
: https://github.com/defunkt/resque/issues/284 inne źródła wskazały minohup
, redirection
, ipty => true
, więc spróbowałem tych wszystkich.
run "nohup svscanboot >/tmp/svscanboot.log 2>&1 &" # NO
run "(svscanboot&) && sleep 1" # NO
run "(nohup svscanboot&) && sleep 1" # YES!
Czy ktoś mógłby mi wyjaśnić, dlaczego potrzebuję oświadczenia o śnie i jaką różnicę robi nohup? Dla rekordu wszystkie powyższe działają równie dobrze, jeśli są uruchamiane z powłoki użytkownika, problem jest tylko w kontekście capistrano.
dzięki