经过几天的谷歌搜索,我终于解决了我的一个问题。我使用Railsless-deploy (capistrano没有rails任务/好东西),这样我就可以部署一个不在rails中的项目。
为了启动/停止/重新启动服务器,我已经创建了一个init.d服务,该服务在ssh中工作得很好,但我必须使用nohup才能使其工作:
namespace :deploy do
task :start, roles: :app, except: { no_release: true } do
sudo "nohup service app start"
end
desc "Stops the app"
task :stop do
sudo "nohup service app stop"
end
desc "Restarts the app"
task :restart do
sudo "nohup service app restart"
end
end
我有两个问题,我是否必须在命令链接this:sudo "nohup service app restart &"
后添加一个&符号。我现在没有使用它,而且它似乎工作得很好。另外,有没有一种方法可以得到实际的输出,这样我就可以知道服务可以启动了呢?到目前为止,它给出了通用的警告:
** [out :: 0.0.0.0] nohup:
** [out :: 0.0.0.0] ignoring input and appending output to `nohup.out'
我想实际查看在使用ssh登录时运行该命令时得到的实际输出。
发布于 2013-10-02 06:05:47
请记住,关于capistrano有两件事:它不需要tty来登录,并且它的默认shell是sh。另一件事是它可能挂在sudo本身,等待密码。sudo作为命令已弃用,#{sudo}或{#try_sudo}可以。
我敢打赌,这些问题之一是导致您的服务不能正常启动。
而不是滥用nohup:
run "#{sudo} service app start", { :shell => 'bash'}
或者使用tty (通常在capfile中设置)运行:
default_run_options[:pty] = true
只需在命令上使用pty即可运行:
run "#{sudo} service app start", { :pty => true}
在命令的末尾添加"&“只会告诉服务器后台处理该进程,而您不会得到任何输出。
https://stackoverflow.com/questions/19041425
复制相似问题