im przy Monit monitorować skrypt ruby, który używa Ruby daemons gem, który uruchamia oddzielny proces z PID - postępując zgodnie z instrukcjami Monitor ruby processes with MonitMonitoring Ruby skrypt, używając Monit - Łącznie RVM
W celu realizacji scenariusza rubinowy muszę do włączenia RVM w ciągi Monit start
i stop
, więc mam dostęp do wszystkich klejnotów.
Jednak gdy .monitrc
wykonuje pojawia się następujący błąd:
$rvm_path (/usr/local/rvm) does not exist./home/william/.rvm/scripts/rvm: line 174: rvm_is_a_shell_function: command not found
/home/william/.rvm/scripts/rvm: line 185: __rvm_teardown: command not found
'myserver_1' failed to start
Aborting event
dodałem PATH=$PATH:/home/william/.rvm/bin && . /home/william/.rvm/scripts/rvm
do ciągów poleceń start
i stop
spróbować i obejmują RVM. Jednak nadal nie działa
plik konfiguracyjny .monitrc
:
....
check process myserver_1
with pidfile /home/william/ruby/barclays/myapp.rb.pid
start = "/bin/bash -c 'PATH=$PATH:/home/william/.rvm/bin && . /home/william/.rvm/scripts/rvm && ruby /home/william/ruby/barclays/daemonloader.rb start'"
stop = "/bin/bash -c 'PATH=$PATH:/home/william/.rvm/bin && . /home/william/.rvm/scripts/rvm && ruby /home/william/ruby/barclays/daemonloader.rb stop'"
....
Dzięki za pomoc.
EDIT
Ive got a feeling problem jest związany z zmiennych środowiskowych. Cytując this page
You should also know that for security reasons Monit purges the environment and only sets a spartan PATH variable that contains /bin, /usr/bin, /sbin and /usr/sbin. If your program or script dies, the reason could be that it expects certain environment variables or to find certain programs via PATH. If this is the case you should set the environment variables you need directly in the start or stop script called by monit.
Finally, Monit uses the system call execv to execute a program or a script. This means that you cannot write shell commands directly in the start, stop or exec statements. To do this, you must do as above; start a shell and issue your commands there. For example:
start program = "/bin/bash -c 'my shell command && my other command'"
Próbowałem tego: 'start =" /home/william/.rvm/bin/rvm w/home/william/ruby / project do ruby daemonloader.rb start "'. Niestety teraz pojawia się komunikat o błędzie "Nie można znaleźć instalacji rvm!" i zawiedzie. Do czego służy 'xxxx in yyy do zzz'? Czy mógłbyś nieco wyjaśnić odpowiedź? Dzięki. – Imme22009
używasz tego jako użytkownik 'william'? – mpapis
Tak - Użytkownik: william. – Imme22009