Monit errors when running "check program" for custom script

lemon lime pomelo picture lemon lime pomelo · Jun 14, 2013 · Viewed 9.7k times · Source

I am getting syntax errors when I try to check the exit status of a bash script using monit's "check program". If I run the bash script manually, it doesn't error. But if I do monit reload with my monit check program in the config, monit gives me errors.

Here's my current monit .conf file --

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

If I change it to this to make sure monit uses bash to parse the file...

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

Then I get this error

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

Even a test script results in errors -- If I have this in script_to_run.sh:

#!/bin/bash
exit 0

Monit will complain

Error: syntax error 'exit'

If I have this in script_to_run.sh:

#!/bin/bash
echo "hello"

Monit will complain

Error: syntax error 'echo'

For reference -- I have monit 5.4, have followed the "check program" example in the man monit doc, and am able to configure/use monit "check process..." just fine on the same server.

Answer

lemon lime pomelo picture lemon lime pomelo · Jun 17, 2013

ok, fixed. for future reference for anyone reading this -- never put .sh files in /etc/monit.d/

that was the problem. i moved the .sh file to a different directory and everything is fine now.