2016-06-15 2 views
1

데몬으로 newrelic 플러그인을 시작하기 위해 init.d 스크립트를 작성했습니다. 문제는 내가 service rb_nr_agent start을 실행할 때 "require"와 관련된 몇 가지 오류가 있다는 것입니다. 출력 :Init.d 스크립트에 필요합니다.

[[email protected] newrelic_rb_plugin]# /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- snmp (LoadError) 
from /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
from /opt/newrelic_rb_plugin/newrelic_redborder_agent:5:in `<main>' 

[[email protected] newrelic_rb_plugin]# ./rb_nr_agent start Starting rb_nr_agent:[ OK ]

이 제대로 시작되지 않습니다. 동일한 스크립트를 실행했지만 프로젝트의 루트 경로에서 오류가 발생하지 않고 정상적으로 작동합니다. init.d는 그 사본입니다.

start() { 
    RESULT=`ps aux | grep $executable | grep -c -v grep` 
    if [ "${RESULT:-null}" -ge "1" ]; then 
     echo "$prog is currently running" 
    else 
     echo -n "Starting $prog: " 
     /opt/newrelic_rb_plugin/newrelic_redborder_agent > /dev/null & 
     RETVAL=$? 
     if [ $RETVAL -eq 0 ]; then 
     echo_success 
     else 
     echo_failure; failure 
     RETVAL=1 
     fi 
     echo 
    fi 
    return $RETVAL } 
+0

당신의 대상 파일 (/ opt/newrelic_rb_plugin/newrelic_redborder_agent)은''puts $ LOAD_PATH''를 추가하고''service ... start''를 사용하여 실행합니다. 그 후에 다시 작동 방식을 실행하고 차이점이 있는지 확인하십시오. –

답변

1

오류 텍스트는 RVM을 사용하는 것을 제안하지만, 그것은 단지 사용자 로그인에로드되고, 따라서 기본적으로 초기화 - 스크립트에서 사용할 수 없습니다 : 여기 당신은 스크립트의 시작 옵션이 있습니다.

사용 rvm do 활성화 RVM으로 명령 실행 : 상단

/usr/local/rvm/bin/rvm ruby-2.1.2 do /opt/newrelic_rb_plugin/newrelic_redborder_agent > /dev/null & 

는 (어떤을 사용하는 경우, 정확한 설치 루비 버전과 gemset 이름을 수정해야 할 수도 있습니다)

+0

그것은 작동하지만 현재'cd PATH_TO_PROJECT'를 스크립트에서 실행해야합니다. 왜냐하면 config dir은 NR Ruby SDK 안에서 구성 할 수 없기 때문입니다. 고맙습니다. –

관련 문제