【问题标题】:"monit restart <service>" how do I know when it's done restarting?“monit restart <service>”我怎么知道它什么时候完成重启?
【发布时间】:2013-12-20 22:51:35
【问题描述】:

我们的系统管理员最近切换到使用monit,所以现在当我想重新启动服务时,我应该使用“monit restart ”而不是“/etc/init.d/ restart” .

但是,monit 命令在成功时不会产生任何输出并立即返回。似乎直到下一个周期之后它才真正重新启动。

我正在重新启动服务,因为我对其进行了更改。我不想针对旧实例测试我的更改。所以我需要知道重启何时完成。我也希望它在我告诉它时重新启动,而不是在它开始时重新启动。我不喜欢在等待时一遍又一遍地输入“ps aux | grep ”。

有没有办法让 monit 立即重启我的服务?

有没有办法让 monit,或者可能是 monit 的包装,阻塞直到重启完成?

有没有办法让 monit 告诉我重启成功了,否则就失败了?

【问题讨论】:

    标签: linux unix monit


    【解决方案1】:

    Monit 是一个非常安静的程序!事实上,monit 命令往往会立即运行并退出,因为它们是在后台运行的! SO ...如果您想查看Monit正在做什么,请使用-v开关,如果您希望它在前台运行,请使用tail -f日志文件和-I

    同步重启

    使用-I option

    monit -I restart servicename
    

    这将禁用在后台重新启动,例如电脑启动时需要!

    如果要诊断问题,请添加详细选项-v

    monit -Iv restart servicename
    

    状态检查

    要检查结果,您可以尝试几件事:

    1)monit的返回值

    monit -I restart servicename
    echo $?
    

    通常,$? 在成功时应为零,否则为非零。但是没有程序支持它,并且没有关于manpage 的信息monit 的退出状态($?)是什么。尝试测试一下。

    2) 使用statussummary 命令

    monit -I status
    

    monit -I status servicename
    

    monit -I summary
    

    这些命令将在输出中返回状态。您可以选择最适合您的命令并解析其输出。或者,如第 1 点),检查返回值 $?(手册页中未提及)。

    【讨论】:

    • 我认为您对 -I 选项的看法可能是正确的(我很惊讶,我认为它只适用于启动 monit),但 -v 选项似乎毫无用处。它不会告诉我我的命令是否成功,而是转储页面和页面关于每个服务监视器正在管理的信息。
    • @Tim 1) 那么-I 选项有帮助吗? 2)-v不是返回状态,仅用于诊断潜在问题3)返回状态请参考我回答的最后一段。 $? 变量包含什么? monit status servicename 告诉你什么?
    • @Tim,我已经扩展了我的答案以便更易于理解。
    • -I 选项似乎没有任何作用。无论有没有这个选项,重启都只是为下一个周期“安排”,重启命令立即成功返回(我使用的是 Monit 5.4)
    • -I 标志不能执行您(和我想要的)操作,它使 monit 不在后台运行,而不是在 monit 接收的命令中运行。可能在某个时候添加了 CLI 等待标志 nongnu.13855.n7.nabble.com/…
    【解决方案2】:

    只需运行monit 即可唤醒monit 守护进程。这应该有助于减少对下一个周期的等待。

    tail -f monit.log 看看重启成功还是失败。

    【讨论】:

      【解决方案3】:

      你总是可以使用这样的东西

      while test -f pidfile.pid && kill -0 $(cat pidfile.pid);
      do 
        sleep 1; 
      done;
      
      while ! kill -0 $(cat pidfile.pid); 
      do 
        sleep 1; 
      done
      

      此脚本在您的进程重新启动时等待。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-14
        • 2019-07-18
        • 2017-12-17
        • 2017-01-31
        • 2018-01-21
        • 1970-01-01
        • 2023-03-15
        相关资源
        最近更新 更多