与Capistrano的背景任务

时间:2013-08-06 09:36:38

标签: ruby-on-rails background capistrano sbt nohup

我知道这个问题已被问到很多,但我无法做到这一点。我已经看过了:

我正在使用capistrano在scala中部署服务器。我的任务看起来像这样:

desc "Start server"
task :start do
    run "cd #{deploy_to} && ./sbt compile start-script"
    run "cd #{deploy_to} && export PORT=#{server_port} && export ENV=#{env} && nohup target/start > /dev/null 2>&1 &"
end

start-script是一个sbt插件,可以在target / start中创建脚本。 当我运行任务时,输出为:

  * executing "cd /home/ubuntu/* && export PORT=* && export ENV=integration && nohup target/start > /dev/null 2>&1 &"
    servers: ["54.217.224.197"]
    [54.217.224.197] executing command
    command finished in 1015ms

但是我的服务器没有启动...当省略“&”时在命令末尾,服务器已启动,但capistrano脚本被阻止。

  * executing "cd /home/ubuntu/* && export PORT=* && export ENV=integration && nohup target/start > /dev/null 2>&1"
    servers: ["54.217.224.197"]
    [54.217.224.197] executing command

提前感谢您的回答。

1 个答案:

答案 0 :(得分:2)

我找到了一个解决方案,只需在末尾添加pty:false

run "cd #{deploy_to} && export PORT=#{server_port} && export ENV=#{env} && nohup target/start > /dev/null 2>&1 &" pty: false