在 Init.d 脚本中要求
Require in Init.d script
我已经编写了一个 init.d 脚本来启动一个 newrelic 插件作为守护进程。问题是当我 运行 service rb_nr_agent start
它有一些与 "require" 相关的错误。输出:
[root@device 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>'
[root@device 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 }
错误文本表明您正在使用 RVM,但它仅在用户登录时加载,因此默认情况下在初始化脚本中不可用。
使用 rvm do
到 运行 启用 rvm 的命令:
/usr/local/rvm/bin/rvm ruby-2.1.2 do /opt/newrelic_rb_plugin/newrelic_redborder_agent > /dev/null &
(您可能需要更正确切安装的 ruby 版本和 gemset 名称,如果使用的话)
我已经编写了一个 init.d 脚本来启动一个 newrelic 插件作为守护进程。问题是当我 运行 service rb_nr_agent start
它有一些与 "require" 相关的错误。输出:
[root@device 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>'
[root@device 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 }
错误文本表明您正在使用 RVM,但它仅在用户登录时加载,因此默认情况下在初始化脚本中不可用。
使用 rvm do
到 运行 启用 rvm 的命令:
/usr/local/rvm/bin/rvm ruby-2.1.2 do /opt/newrelic_rb_plugin/newrelic_redborder_agent > /dev/null &
(您可能需要更正确切安装的 ruby 版本和 gemset 名称,如果使用的话)