Starten des Hintergrundprozesses in der Capistrano-Task
Capistrano Aufgabe
namespace :service do
desc "start daemontools (svscan/supervise/svscanboot)"
task :start, :roles => :app do
sudo "svscanboot&"
end
end
Das funktioniert jetzt nicht: Der Prozess svscanboot wird einfach nicht ausgeführt. Das hat mir geholfen zu findensleep
: https://github.com/defunkt/resque/issues/284 andere Quellen haben mich darauf hingewiesennohup
, redirection
, undpty => true
Also habe ich all das ausprobiert.
run "nohup svscanboot >/tmp/svscanboot.log 2>&1 &" # NO
run "(svscanboot&) && sleep 1" # NO
run "(nohup svscanboot&) && sleep 1" # YES!
Könnte mir jemand erklären, warum ich die Schlaf-Erklärung brauche und welchen Unterschied Nohup macht? Für die Aufzeichnung laufen alle oben genannten gleich gut, wenn sie von der Benutzer-Shell ausgeführt werden, das Problem liegt nur im Kontext von capistrano.
Vielen Dank