3

当我尝试使用 monit 的“检查程序”检查 bash 脚本的退出状态时,出现语法错误。如果我手动运行 bash 脚本,它不会出错。但是,如果我在配置中使用我的 monit check 程序执行 monit reload,monit 会给我错误。

这是我当前的 monit .conf 文件——

check program myscript with path "/etc/monit.d/script_to_run.sh"
  if status != 0 then alert

如果我将其更改为此以确保 monit 使用 bash 解析文件...

check program myscript with path "/usr/bash /etc/monit.d/script_to_run.sh"
  if status != 0 then alert

然后我得到这个错误

Warning: Program does not exist: '"/bin/bash /etc/monit.d/script_to_run.sh"'

即使是测试脚本也会导致错误——如果我在 script_to_run.sh 中有这个:

#!/bin/bash
exit 0

蒙尼特会抱怨

Error: syntax error 'exit'

如果我在 script_to_run.sh 中有这个:

#!/bin/bash
echo "hello"

蒙尼特会抱怨

Error: syntax error 'echo'

供参考-我有monit 5.4,遵循了man monit doc中的“检查程序”示例,并且能够在同一台服务器上配置/使用monit“检查过程...”就好了。

4

2 回答 2

7

好的,修好了。供阅读本文的任何人将来参考 - 切勿将 .sh 文件放入 /etc/monit.d/

这就是问题所在。我将 .sh 文件移动到另一个目录,现在一切都很好。

于 2013-06-17T19:03:51.250 回答
0

我在 AWS 云上使用 Amazon AMI。不幸的是,默认情况下,亚马逊正在运送旧版本的 Monit - 5.2.5

https://forums.aws.amazon.com/thread.jspa?threadID=215645

他们建议安装 monit 版本,否则。亚马逊论坛给出了这个解决方法:

sudo yum install -y https://kojipkgs.fedoraproject.org//packages/monit/5.14/1.el6/x86_64/monit-5.14-1.el6.x86_64.rpm
于 2017-01-31T12:11:33.257 回答