![检查监控状态/摘要成功/失败的正确方法是什么](https://linux22.com/image/788484/%E6%A3%80%E6%9F%A5%E7%9B%91%E6%8E%A7%E7%8A%B6%E6%80%81%2F%E6%91%98%E8%A6%81%E6%88%90%E5%8A%9F%2F%E5%A4%B1%E8%B4%A5%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88.png)
我在生产环境中使用 monit 实用程序来监控多个守护进程(我们的微服务)。我正在尝试找出在更新守护进程时取消监控/监控它们的最佳方法。所以,基本上我需要类似这样的伪代码:
has_monit = false
if `monit watches daemon-xxx` then
has_monit = true
monit unmonitor daemon-xxx
endif
apt-get install xxx.deb
if has_monit then
monit monitor deamon-xxx
endif
monit summary daemon-xxx
不幸的是,无论成功还是失败,它似乎总是返回退出代码 0,并打印有关失败的原始 html,例如
[bialix@server ~]$ sudo monit summary xxx
<html><head><title>400 Bad Request</title></head><body bgcolor=#FFFFFF><h2>Bad Request</h2>Service 'xxx' not found<hr><a href='http://mmonit.com/monit/'><font size=-1>monit 5.30.0</font></a></body></html>
[bialix@server ~]$ echo $?
0
仅当 monit 没有运行时才会出现退出代码 1。
这里正确的方法是什么?解析输出monit summary
?
答案1
你是对的。Monit 的退出代码是输入的命令的状态。
如果资源未定义或者仅存在任何其他内部问题,则您会得到“1”。
建议,我使用“monit -B summary xxxx”来获取服务状态并解析命令输出。选项“-B”是批处理命令行模式,并删除输出表和颜色。