"monit restart <service>"我怎么知道什么时候重启?

Tim*_*Tim 13 unix linux monit

我们的sysadmin最近切换到使用monit,所以现在当我想重新启动服务时,我应该使用"monit restart <servicename>"而不是"/etc/init.d/ <servicename> restart".

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

我正在重新启动服务,因为我对它进行了更改.我不想测试我对旧实例的更改.所以我需要知道重启完成的时间.当我告诉它时,我也希望它重新启动,而不是当它转向它时.在我等待的时候,我不喜欢一遍又一遍地输入"ps aux | grep <myservicename>".

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

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

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

TMS*_*TMS 20

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

同步重启

使用-I选项:

monit -I restart servicename
Run Code Online (Sandbox Code Playgroud)

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

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

monit -Iv restart servicename
Run Code Online (Sandbox Code Playgroud)

状态检查

要检查结果,您可以尝试以下几种方法:

1)monit的返回值

monit -I restart servicename
echo $?
Run Code Online (Sandbox Code Playgroud)

通常,$?成功时应为零,否则应为非零.然而,没有程序支持它,并且没有关于联机帮助页的信息什么是退出状态($?)monit.尝试测试一下.

2)使用statussummary命令

monit -I status
Run Code Online (Sandbox Code Playgroud)

要么

monit -I status servicename
Run Code Online (Sandbox Code Playgroud)

要么

monit -I summary
Run Code Online (Sandbox Code Playgroud)

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