2016-06-15 5 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を使用していることを示唆しているが、それは唯一のユーザのログイン時にロードされているので、デフォルトでのinit-スクリプトでは使用できません。ここでは、スクリプトの起動オプションを持っています。

使用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の中で設定できないからです。どうもありがとうございました。 –

関連する問題