2016-06-15 17 views
1

Ich habe ein init.d-Skript erstellt, um ein neuesrelic-Plugin als Daemon zu starten. Das Problem ist, dass wenn ich service rb_nr_agent start ausführen, es einige Fehler im Zusammenhang mit "require" hat. Ausgang:Require in Init.d-Skript

[[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 ]

Es startet nicht richtig. Wenn ich das gleiche Skript aber im Stammpfad des Projekts ausführe, hat es keinen Fehler und es funktioniert gut. Das init.d ist eine Kopie von diesem. Hier haben Sie die Startoption des Skripts:

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

An der Spitze des Zieldatei (/ opt/newrelic_rb_plugin/newrelic_redborder_agent) addiere '' puts $ LOAD_PATH'' und führe sie mit '' service ... start'' aus. Danach führe es erneut so wie es funktioniert und überprüfe, ob es irgendwelche Unterschiede gibt. –

Antwort

1

Fehlertext zeigt, dass Sie RVM verwenden, aber es wird nur bei der Benutzeranmeldung geladen und ist somit nicht in init-Skripte standardmäßig.

Verwenden rvm do einen Befehl mit rvm laufen aktiviert:

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

(Sie können für die genaue installiert Ruby-Version und gemset Namen korrigieren müssen, wenn überhaupt verwendet wird)

+0

Es funktioniert, aber ich muss ein 'cd PATH_TO_PROJECT' zuvor im Skript ausführen, da config dir nicht in NR Ruby SDK konfiguriert werden kann. Vielen Dank. –