Sto eseguendo il debug delle istruzioni del programma start/stop. Nel mio file /etc/monit.conf
, il mio start program
dichiarazione simile a questa:monit rimuove le virgolette dai comandi del programma di avvio
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'""
che ho testato in un guscio con
$ sudo su
# env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/sh
# /bin/su -c '/usr/bin/env APP_ENV=development; /home/ec2-user/local/bin/node /home/ec2-user/example.com/current/api.js start &> /tmp/monit.out '
l'esecuzione di questo ritorna nel file /tmp/monit.out
l'uscita corretta:
Starting nodejs daemon...
nodejs daemon started. PID: 16408
Ma quando corro sudo monit -v monitor node
, visualizza un comando diverso , identico pt con le virgolette singole interne rimosso:
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
Non riesco a trovare niente di questo nella documentazione Monit. La documentazione here sembra essere il riferimento finale ma, a meno di passare attraverso il codice sorgente, non sono sicuro di cosa fare dopo.
Il mio comando funziona perfettamente senza le virgolette rimosse, quindi ho solo bisogno di risolvere questo problema. Tutte le idee e le possibili correzioni sono benvenute.
escape singola virgola non funziona – dubeegee