2013-07-30 16 views
6

alıntıları kaldırır Monit start/stop program deyimlerini hata ayıkladım. Benim /etc/monit.conf dosyasında, benim start program deyimi şuna benzer:monit, başlangıç ​​programı komutlarından

Starting nodejs daemon... 
nodejs daemon started. PID: 16408 
: Ben

$ 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 ' 

bu /tmp/monit.out dosyasında doğru çıkışı verir çalışan bir kabuk içinde test ettik

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'"" 

sudo monit -v monitor node'u çalıştırdığımda, farklı bir komut ve aynı eşi görüntüler İç tek tırnak ile pt kaldırıldı: Ben monit belgelerinde bu konuda bir şey bulamıyorum

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 

. here dokümanı, nihai referans gibi görünüyor ancak kaynak kodun içinden geçmenin kısa bir süredir, bir sonraki adımın ne olduğundan emin değilim.

Komutum, tırnaklar kaldırılmadan mükemmel bir şekilde çalışıyor, bu yüzden bu sorunu düzeltmem gerekiyor. Tüm fikirler ve olası düzeltmeler hoş geldiniz.

cevap

2

Yine de ben önemli o yüzden (Ben misleaded edildi) bazı yanlış anlamaları bir tek tırnak kaçış karakteri gerekmez

neden çünkü bulmak, oldukça geç bir cevap. Deneyin:

check process fake_proc 
    with pidfile /tmp/test_pid 
    start = "/bin/bash -c 'echo $$ > /tmp/test_pid'" 
    stop = "echo stop > /tmp/test_pid" 

Ancak test_pid dosya oluşturulur, bir başladı süreç olarak gösterilen olmayacaktır. Bir işlemi yakalamak ve özelliklerini incelemek için ; sleep xx'u ekleyin.

Sorun, bazı belirli bir sorundan kaynaklanıyor olabilir.

0

"Başlat programı" ve "programı durdur" komutlarını bir kabuk komut dosyasına yerleştirin, çalıştırılabilir duruma getirin ve daha sonra adresini monite verin.

da, eğik çizgi kullanarak tek tırnak onu kaçmaya çalışan

\'

(i eğer çalışırsa yüzden bilmiyorum denemedim).

+3

tek tırnak işareti çalışmıyor – dubeegee