【问题标题】:Monitor a process that is already running监控已经在运行的进程
【发布时间】:2013-12-20 06:25:55
【问题描述】:

我正在尝试监控已经在运行的 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 被杀死/停止的上帝才应该启动它。

【问题讨论】:

标签: god


【解决方案1】:

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

直接来自 GOD rb 文档

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

我还建议您阅读我在here 上的答案

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

希望有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2015-02-18
    相关资源
    最近更新 更多