我有一个可以控制我的redis服务器的capistrano脚本。以下是问题的任务:

  %w[start stop restart].each do |cmd|
    desc "#{cmd}s redis-server"
    task cmd, :roles => :app do
      run "#{sudo} /etc/init.d/redis-server #{cmd}"
    end
  end

When I run this (deploying to a local vagrant VM) it says it's starts successfully:

    > cap local redis:start


    triggering load callbacks
  * executing `local'
Deploying branch master
    triggering start callbacks for `redis:start'
  * executing `multistage:ensure'
  * executing `redis:start'
  * executing "sudo -p 'sudo password: ' /etc/init.d/redis-server start"
    servers: ["192.168.33.10"]
Password: 
    [192.168.33.10] executing command
 ** [out :: 192.168.33.10] Starting redis-server:
 ** [out :: 192.168.33.10] redis-server.
    command finished in 2054ms
. 但是,当我ssh时,redis-server未运行。如果我手动启动它,它可以工作:

> sudo /etc/init.d/redis-server start
.

,我得到了相同的输出,只有此次过程停留运行。

/var/log/redis/redis.log处查看日志,文件为空。

任何我做错了什么的想法?我启动这样的其他服务(Nginx,Unicorn,MySQL等),那些正在运行正常。

有帮助吗?

解决方案

我相信一旦SSH连接终止,Redis进程就会结束。

尝试将 nohup 添加到您的脚本:

run "#{sudo} nohup /etc/init.d/redis-server #{cmd}"
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top