0

我计划在我的 capistrano 食谱文件中添加一些任务,以使管理员能够远程启动/停止/重新启动private_pub服务器。但是如果一开始我可以使用类似的东西

  desc "Start private_pub server"
  task :start do
    run "cd #{current_path};rackup private_pub.ru -s thin -E production -D"
  end

我找不到任何文档如何停止或重新启动机架服务器。我看到选项

  -P, --pid FILE           file to store PID (default: rack.pid)

但也许使用 kill 命令停止服务器 - 不是好主意?

4

2 回答 2

2

我在寻找相同的解决方案时发现了这一点。

gist.github.com/3197633

基本上,在启动进程时,您可以将 pid 号写入 /tmp/pids 中的文件,然后当您停止它时,您读取该文件并运行 kill -9 ...

希望能帮助到你。

于 2012-10-17T13:53:02.623 回答
0

你的正确使用kill -9是一个坏主意。这可能会导致不必要的数据丢失,据我了解,建议使用kill 2kill -INT相当于点击“control-c”并且应该为您关闭普通服务器。我个人已经开始使用 TPW 的 God gem 来管理我的服务器。这是我用于运行本地“geminabox”服务器的脚本,例如:

God.watch do |w|
w.name = 'gemserver'
    w.dir = '/usr/local/gemserver'
    w.pid_file = "#{ENV['HOME']}/.god/pids/#{w.name}.pid"
    ru = File.expand_path `which rackup`
    w.start = "#{ru} -D #{w.dir}/config.ru -P #{w.pid_file}"
    # w.stop = lambda { Process.kill(3, `lsof -i :9292`.chomp.to_i) }
    w.behavior :clean_pid_file
    w.keepalive
end
于 2014-04-30T08:00:45.337 回答