launching background process in capistrano task

无人久伴 提交于 2019-11-30 05:06:08

My simple solution would be make svscanboot.sh file at remote server with whatever code you want to run. In your case

svscanboot >/tmp/svscanboot.log 2>&1

In cap rake task add this

run "sh +x somefile.sh &"

this works well for me.

Jonathan MacDonald

Try forking the process as explained here: Spawn a background process in Ruby

You should be able to do something like this:

job1 = fork do
  run "svscanboot"
end

Process.detach(job1)

As well, checkout this: Starting background tasks with Capistrano

I think nohup just launches the process in background, so you don't need to explicitly set the last &.

Did you try

run "nohup svscanboot >/tmp/svscanboot.log 2>&1"

(without the ending & to send it to the background).

That should work and remain running when your current capistrano session is closed.

Try this

run "nohup svscanboot >/tmp/svscanboot.log 2>&1 & sleep 5", pty: false

I'd like to share my solution which also works when executing multiple commands. I tried many other variants found online, including the "sleep N" hack.

run("nohup sh -c 'cd #{release_path} && bundle exec rake task_namespace:task_name RAILS_ENV=production > ~/shared/log/<rakelog>.log &' > /dev/null 2>&1", :pty => true)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!