0

我正在尝试监视已经在运行的 java 进程。

以下是我的上帝配置(test.god):

God.watch do |w|
    w.name = "Test"
    w.start = "java Test"
    w.keepalive

我使用以下命令启动了上帝监控:

god -c test.god

以下是日志:

INFO: Loading test.god
INFO: Syslog enabled.
INFO: Using pid file directory: /home/guest/.god/pids
INFO: Started on drbunix:///tmp/god.17165.sock
INFO: Test move 'unmonitored' to 'up'
INFO: Test moved 'unmonitored' to 'up'
INFO: Test [trigger] process is not running (ProcessRunning)
INFO: Test move 'up' to 'start'
INFO: Test start: java Test
INFO: Test moved 'up' to 'up'

正如我所提到的,我已经启动了 Test.java 类并且它启动并运行了,当我开始用上帝监视它时,它无法识别 Test.java 正在运行并且它的 Test.java 再次运行。

所以有2个进程名为Test,一个是我启动的,另一个是上帝启动的。

任何人请建议我如何创建上帝配置来启动未运行的进程。我可能会这样,因为当我开始用上帝监视时,Test.java 已经在运行,它不应该再次启动它。只有当 Test.java 被杀死/停止的上帝应该启动它。

4

1 回答 1

1

好吧,也许你必须给它一个 pid 来监控你需要将 pid_file 指定给上帝

直接来自 GOD rb 文档

在此处输入图像描述

 w.pid_file = File.join(RAILS_ROOT, "log/mongrel.#{port}.pid") ## Your Pid file 

我还建议您在这里阅读我的答案

如果您彻底阅读了问题和答案(尤其是当我c.running assign as false or true在答案中描述含义时),您可能会找到您正在寻找的确切答案

希望这有帮助

于 2013-12-26T06:50:06.923 回答