Linux &引用;监控重启<;服务>&引用;我怎么知道它是什么时候';重启完成了吗?

Linux &引用;监控重启<;服务>&引用;我怎么知道它是什么时候';重启完成了吗?,linux,unix,monit,Linux,Unix,Monit,我们的系统管理员最近切换到使用monit,所以现在当我想重新启动服务时,我应该使用“monit restart”而不是“/etc/init.d/restart” 但是,如果monit命令成功,则不会产生输出并立即返回。看起来它直到下一个循环之后才真正重新启动 我正在重新启动该服务,因为我对其进行了更改。我不想针对旧实例测试我的更改。所以我需要知道重启何时完成。我也希望它在我告诉它的时候重新启动,而不是在它开始的时候。我不喜欢在等待的时候一遍又一遍地输入“ps aux | grep” 有没有办法让

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

但是,如果monit命令成功,则不会产生输出并立即返回。看起来它直到下一个循环之后才真正重新启动

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

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

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


有没有办法让monit告诉我重启成功了,或者失败了?

monit是一个非常安静的程序!事实上,monit命令倾向于立即运行和退出,因为它们在后台运行!所以如果要查看Monit正在做什么,请使用
-v
开关;如果要在前台运行,请使用
tail-f
日志文件和
-I

同步重启 使用:

这将禁用在后台重新启动,例如在计算机启动时需要重新启动

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

monit -Iv restart servicename
状态检查 要检查结果,您可以尝试以下几种方法:

1)monit的返回值

monit -I restart servicename
echo $?
通常,
$?
在成功时应为零,否则为非零。但是,程序不支持它,并且没有关于
monit
的退出状态(
$?
)的信息。试着测试一下

2)使用
状态
摘要
命令

monit -I status


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

只需运行
monit
即可唤醒monit deamon。这将有助于减少对下一个周期的等待


执行
tail-f monit.log
以查看重新启动是否成功或失败。

您始终可以使用类似的方法

while test-f pidfile.pid&&kill-0$(cat pidfile.pid);
做
睡眠1;
完成;
虽然kill-0$(cat-pidfile.pid);
做
睡眠1;
完成

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

我认为您对-I选项的看法可能是正确的(我很惊讶,我认为这只适用于启动monit),但-v选项似乎毫无用处。它没有告诉我命令是否成功,而是转储有关monit正在管理的每个服务的一页又一页的信息。@Tim 1)
-I
选项是否有帮助?2)
-v
不是返回状态,只是诊断潜在问题3)关于返回状态,请参阅我答案的最后一段。
$?
变量包含什么?
monit status servicename
告诉了你什么?@Tim,我把我的答案扩展了一点,让你更容易理解。
-I
选项似乎没有任何作用。无论是否使用该选项,restart都只是在下一个周期中“调度”get,并且restart命令立即成功返回(我使用的是Monit 5.4)-I标志不执行您(和我想要的),它使Monit不会在后台运行,而不是Monit接收的命令。可能在某些时候添加了CLI等待标志
monit -I status
monit -I status servicename
monit -I summary