I am debugging monit start / stop programs. In my /etc/monit.conf file, my start program statement looks like this:
check process node with pidfile /home/ec2-user/blah/node.pid start program = "/bin/su -c 'export APP_ENV=development; /home/ec2-user/local/bin/node /home/ec2-user/example.com/current/api.js start &> /tmp/monit.out ' " stop program = "/bin/su -c '/home/ec2-user/local/bin/node /home/ec2-user/example.com/current/api.js stop'""
which I tested in a shell with
$ sudo su
executed this returns the correct output in the /tmp/monit.out file:
Starting nodejs daemon... nodejs daemon started. PID: 16408
But when I run sudo monit -v monitor node , it displays another command that is identical, with the exception of the remote internal single quotes :
The service list contains the following entries: Process Name = node Pid file = /home/ec2-user/blah/node.pid Monitoring mode = active Start program = '/bin/su -c export APP_ENV=development; /home/ec2-user/local/bin/node /home/ec2-user/example.com/current/api.js start &> /tmp/monit.out ' timeout 30 second(s) Stop program = '/bin/su -c /home/ec2-user/local/bin/node /home/ec2-user/example.com/current/api.js stop' timeout 30 second(s) Existence = if does not exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert Pid = if changed 1 times within 1 cycle(s) then alert Ppid = if changed 1 times within 1 cycle(s) then alert System Name = system_ip-xx-xx-xx-xx.ec2.internal Monitoring mode = active
I cannot find anything about this in the monit documentation. The documentation here seems to be the final link, but does not go through the source code, I'm not sure what to do next.
My team works fine without removing quotes, so I just need to fix this problem. All ideas and possible corrections are welcome.
source share