所以我在可靠地启动上帝时遇到了问题。在一切成功之前,我可能需要重新启动多次。
OSX 10.6.8
Ruby 1.9.3-p236
god 0.13.2
我有一个配置文件,我在其中指定监视两个进程,如下所示:
bindir = "/Users/me/foobar"
basedir = "/Users/me/foobar"
God::Contacts::Email.defaults do |d|
d.from_email = 'god@example.copm'
d.from_name = 'God'
d.delivery_method = :sendmail
end
God.contact(:email) do |c|
c.name = 'me'
c.group = 'foobar'
c.to_email = 'me@example.com'
end
God.watch do |w|
w.name = "foo"
w.group = "foobar"
w.dir = basedir
w.log = "logs/foo.log"
w.start = "ruby #{bindir}/foo.rb"
w.keepalive
w.transition(:up, :start) do |on|
on.condition(:process_exits) do |c|
c.notify = 'me'
end
end
end
God.watch do |w|
w.name = "bar"
w.group = "foobar"
w.dir = basedir
w.log = "logs/bar.log"
w.start = "ruby #{bindir}/bar.rb"
w.keepalive
w.transition(:up, :start) do |on|
on.condition(:process_exits) do |c|
c.notify = 'me'
end
end
end
如果我用 -D 开始上帝,所以我在控制台中看到它总是可以正常工作并且我的进程开始了。
god -c foobar.god -D
都好。然后我还可以运行以下内容:
god status
god stop foobar
god start foobar
god terminate foobar
所有作品。
现在,如果我在没有 -D 选项的情况下开始,它要么 (a) 正常工作,(b) 上帝启动进程,但它本身没有(或死亡),或者 (c) 什么都没有启动。
我一直在寻找某种日志条目,但没有找到任何表明存在故障的信息。同样正如我已经描述的那样,它确实有时会起作用。只是不是每次。
我看到的另一个问题(我现在不知道它是否相关)是当上帝和我的进程都运行良好(没有 -D)时,大多数时候无法成功向它发送命令. 即类似的东西
god stop foobar
不会终止,只会产生很多点
god terminate foobar
..............................................
同时我可以在顶部看到上帝开始占用大量 CPU。
我必须按 ctrl-c 然后用 -9 杀死上帝进程,然后手动清理受监视的进程。
我还没有在网上找到任何与我所描述的内容相近的东西。我非常想知道发生了什么。任何人都可以帮助或你有什么建议我可以尝试吗?
提前致谢!
更新:
杀死上帝进程会导致此堆栈跟踪:
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:570:in `load' /Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:632:in `recv_reply' /Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:918:in `recv_reply' /Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1197:in `send_message' /Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1088:in `block (2 levels) in method_missing' /Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1172:in `open' /Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1087:in `block in method_missing' /Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1105:in `with_friend' /Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1086:in `method_missing' /Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/lib/god/cli/command.rb:183:in `terminate_command' /Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/lib/god/cli/command.rb:30:in `dispatch' /Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/lib/god/cli/command.rb:10:in `initialize' /Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/bin/god:121:in `new' /Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/bin/god:121:in `' /Users/me/.rvm/gems/ruby-1.9.3-head/bin/god:19:in `load' /Users/me/.rvm/gems/ruby-1.9.3-head/bin/god:19:in `' /Users/me/.rvm/gems/ruby-1.9.3-head/bin/ruby_noexec_wrapper:14:in `eval' /Users/me/.rvm/gems/ruby-1.9.3-head/bin/ruby_noexec_wrapper:14:in `'
在线搜索在 Ruby 中发现了这个错误。