Iniciar proceso de fondo en tarea capistrano.
tarea capistrano
namespace :service do
desc "start daemontools (svscan/supervise/svscanboot)"
task :start, :roles => :app do
sudo "svscanboot&"
end
end
Ahora esto no funciona: el proceso svscanboot simplemente no se ejecuta. Esto me ayudó a encontrarsleep
: https://github.com/defunkt/resque/issues/284 otras fuentes me señalaronnohup
, redirection
ypty => true
, así que intenté todo esto.
run "nohup svscanboot >/tmp/svscanboot.log 2>&1 &" # NO
run "(svscanboot&) && sleep 1" # NO
run "(nohup svscanboot&) && sleep 1" # YES!
Ahora, ¿podría alguien explicarme por qué necesito la declaración de suspensión y qué diferencia hace nohup? Para el registro, todo lo anterior funciona igual de bien si se ejecuta desde el shell de usuario, el problema solo está en el contexto de capistrano.
Gracias