当我为 status == 0 添加测试时,Monit 检查失败
Monit check fails when I add test for status == 0
我在 Debian Jessie 上 运行ning M/Monit 5.14。我有一张这样的支票:
check program myscript with path "/etc/monit/scripts/test.sh"
if status != 0 then exec "/etc/monit/scripts/record_failure.sh"
if status == 0 then exec "/etc/monit/scripts/record_success.sh"
想法是,这些 record
脚本会在每次 运行 时发送一次测试结果记录。当然,还有其他方法可以做到这一点,但这只是我在这种情况下采用的一种特殊方法。我更关心的是添加 status == 0
行会使 monit 检查总是失败,即使 monit status
中的最后结果是 0
并且 record_success.sh
是 运行.
the site 上没有关于此的任何记录。是因为有匹配条件导致检查失败,还是我搞砸了语法?
我用下面的脚本和你的 Monit 配置做了一个小测试,根据最后一个命令返回退出状态,并拖尾 /var/log/tester.log
#!/bin/bash
echo "This is a test" >> /var/log/tester.log
exit
失败:
#!/bin/bash
echo "failure in this case" >> /var/log/tester.log
成功:
#!/bin/bash
echo "success in this case" >> /var/log/tester.log
从 exit
切换到 exit 1
时,状态切换没有问题。 Monit version 5.6
- 我会尝试从您的脚本中调试返回的状态。
- 我会检查所有这些文件是否可执行。
虽然这是一个旧问题 post,但我刚遇到同样的问题,如果能找到解决方案会很有帮助。
根据 Serivce Testing General Syntax 检查测试程序的正确结构应该是
IF <test> THEN <action> [ELSE IF SUCCEEDED THEN <action>]
如您所见,成功案例(按照惯例为0)应该由succeeded
关键字指定。
在这种情况下,以下更改应该会让它满意:
check program myscript with path "/etc/monit/scripts/test.sh"
if status != 0 then exec "/etc/monit/scripts/record_failure.sh"
else if succeeded then exec "/etc/monit/scripts/record_success.sh"
我在 Debian Jessie 上 运行ning M/Monit 5.14。我有一张这样的支票:
check program myscript with path "/etc/monit/scripts/test.sh"
if status != 0 then exec "/etc/monit/scripts/record_failure.sh"
if status == 0 then exec "/etc/monit/scripts/record_success.sh"
想法是,这些 record
脚本会在每次 运行 时发送一次测试结果记录。当然,还有其他方法可以做到这一点,但这只是我在这种情况下采用的一种特殊方法。我更关心的是添加 status == 0
行会使 monit 检查总是失败,即使 monit status
中的最后结果是 0
并且 record_success.sh
是 运行.
the site 上没有关于此的任何记录。是因为有匹配条件导致检查失败,还是我搞砸了语法?
我用下面的脚本和你的 Monit 配置做了一个小测试,根据最后一个命令返回退出状态,并拖尾 /var/log/tester.log
#!/bin/bash
echo "This is a test" >> /var/log/tester.log
exit
失败:
#!/bin/bash
echo "failure in this case" >> /var/log/tester.log
成功:
#!/bin/bash
echo "success in this case" >> /var/log/tester.log
从 exit
切换到 exit 1
时,状态切换没有问题。 Monit version 5.6
- 我会尝试从您的脚本中调试返回的状态。
- 我会检查所有这些文件是否可执行。
虽然这是一个旧问题 post,但我刚遇到同样的问题,如果能找到解决方案会很有帮助。
根据 Serivce Testing General Syntax 检查测试程序的正确结构应该是
IF <test> THEN <action> [ELSE IF SUCCEEDED THEN <action>]
如您所见,成功案例(按照惯例为0)应该由succeeded
关键字指定。
在这种情况下,以下更改应该会让它满意:
check program myscript with path "/etc/monit/scripts/test.sh"
if status != 0 then exec "/etc/monit/scripts/record_failure.sh"
else if succeeded then exec "/etc/monit/scripts/record_success.sh"