我们的系统管理员最近切换到使用monit,所以现在当我想重新启动服务时,我应该使用“monit restart< servicename>”而不是“/etc/init.d/\u0026lt;servicename\u0026gt; restart”.
但是,monit命令在成功时不产生输出并立即返回.似乎它实际上没有重新启动,直到下一个循环.
我正在重新启动服务,因为我进行了更改.我不想测试我对旧实例的修改.所以我需要知道什么时候重新启动完成.我也会喜欢它在重新启动时,我告诉它,而不是当它到达它.我不喜欢输入“ps aux | grep< myservicename>”一次又一次的等待.
有没有办法使monit立即重启我的服务?
有没有办法让monit或围绕monit封装,阻止直到重新启动完成?
有没有办法让monit告诉我重启是成功的,否则它失败了?
解决方法
Monit是一个非常沉默的程序!事实上,monit命令往往运行并立即退出,因为它们在后台运行!如果要查看Monit正在做什么,请使用-v开关,如果您希望在前台运行,则会拖尾日志文件和-I.
同步重新启动
使用-I
option:
monit -I restart servicename
这将禁止在背景中重新启动,例如需要你的电脑开机!
如果要诊断问题,请添加详细选项-v:
monit -Iv restart servicename
状态检查
要检查结果,您可以尝试几件事情:
1)monit返回值
monit -I restart servicename echo $?
通常,$?成功后应为零,否则为零.但是,程序不支持它,manpage没有关于monit退出状态($?)的信息.尝试测试它.
2)使用状态或摘要命令
monit -I status
要么
monit -I status servicename
要么
monit -I summary
这些命令将返回输出的状态.您可以选择最适合您的命令并解析其输出.或者,如第1点),检查返回值$? (在联机帮助页中没有提到).