当我尝试使用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
Monit会抱怨
Error: syntax error 'exit'
如果我在script_to_run.sh中有这个:
#!/bin/bash
echo "hello"
Monit会抱怨
Error: syntax error 'echo'
供参考 - 我有monit 5.4,已经按照man monit doc中的“check program”示例,并且能够在同一台服务器上配置/使用monit“check process ...”。/ p>
答案 0 :(得分:7)
这就是问题所在。我将.sh文件移动到另一个目录,一切都很好。
答案 1 :(得分: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