monit reload - 如何知道何时完成?

monit reload - 如何知道何时完成?

我有这个需求,需要动态地将服务添加到 monit。因此,我正在做的是将服务 monit 文件复制到 /etc/monit.d/(包含在 /etc/monitrc 中)并重新加载 monit。

cp <service-monit-file> /etc/monit.d/
monit reload
monit monitor <service-name>

现在 monit 命令在后台运行。因此,monit monitor命令失败(未找到服务),因为monit reload没有立即完成。

那么可以采取什么方法来确保monit monitor仅在完成后才调用monit reload。我试过了monit -I reload,但结果是一样的。

使用 tail 检查 monit 日志并在出现“reloaded”字符串时中断也是不可能的,因为 tail 将输出到 stdout,这是不允许的。

答案1

我无法重现此问题(我得到了不同的错误),但我猜想monit monitor在你的情况下该命令会失败并返回非零值。然后我会这样做:

while ! monit monitor <service-name> 2>/dev/null
do
    sleep 1
done

注意:您可能需要添加超时机制以避免无限while循环。

相关内容