发布
社区首页 >问答首页 >Capistrano和Ubuntu服务

Capistrano和Ubuntu服务
EN

Stack Overflow用户
提问于 2013-09-27 09:43:44
回答 1查看 574关注 0票数 0

经过几天的谷歌搜索,我终于解决了我的一个问题。我使用Railsless-deploy (capistrano没有rails任务/好东西),这样我就可以部署一个不在rails中的项目。

为了启动/停止/重新启动服务器,我已经创建了一个init.d服务,该服务在ssh中工作得很好,但我必须使用nohup才能使其工作:

代码语言:javascript
代码运行次数:0
复制
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 &"后添加一个&符号。我现在没有使用它,而且它似乎工作得很好。另外,有没有一种方法可以得到实际的输出,这样我就可以知道服务可以启动了呢?到目前为止,它给出了通用的警告:

代码语言:javascript
代码运行次数:0
复制
 ** [out :: 0.0.0.0] nohup:
 ** [out :: 0.0.0.0] ignoring input and appending output to `nohup.out'

我想实际查看在使用ssh登录时运行该命令时得到的实际输出。

EN

回答 1

Stack Overflow用户

发布于 2013-10-02 06:05:47

请记住,关于capistrano有两件事:它不需要tty来登录,并且它的默认shell是sh。另一件事是它可能挂在sudo本身,等待密码。sudo作为命令已弃用,#{sudo}或{#try_sudo}可以。

我敢打赌,这些问题之一是导致您的服务不能正常启动。

而不是滥用nohup:

代码语言:javascript
代码运行次数:0
复制
run "#{sudo} service app start", { :shell => 'bash'}

或者使用tty (通常在capfile中设置)运行:

代码语言:javascript
代码运行次数:0
复制
default_run_options[:pty] = true

只需在命令上使用pty即可运行:

代码语言:javascript
代码运行次数:0
复制
run "#{sudo} service app start", { :pty => true}

在命令的末尾添加"&“只会告诉服务器后台处理该进程,而您不会得到任何输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19041425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档