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