我有一个脚本。它由一个sensu服务器客户端运行。 这是进程
ps aux |grep sensu
sensu 18171 0.0 1.3 134716 24044 ? Sl 12:50 0:00 /opt/sensu/embedded/bin/ruby /opt/sensu/bin/sensu-client -b -c /etc/sensu/config.json -d /etc/sensu/conf.d -e /etc/sensu/extensions -p /var/run/sensu/sensu-client.pid -l /var/log/sensu/sensu-client.log -L info
这是脚本的第一行:
#! /usr/local/rvm/rubies/ruby-2.1.3/bin/ ruby
我想知道如何强制客户端使用特定的ruby版本
尝试:
rvm use 2.1.3
在root用户下的~/.bashrc
文件中。我没有sensu
用户..
我的感觉说:
sh: 1: /etc/sensu/plugins/cpu_check.rb: Permission denied
编辑:
删除第一行的间隔,如下所示:
#!/usr/local/rvm/rubies/ruby-2.1.3/bin/ruby
现在我得到了
/usr/local/rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in
要求':无法加载此类文件 - sensu-plugin / check / cli(LoadError)`
但已安装:
$: ls /usr/local/rvm/gems/ruby-2.1.3/gems/
mixlib-cli-1.5.0 sensu-plugin-1.1.0
答案 0 :(得分:0)
实现目标的常用方法是使用脚本包装器:
#!/bin/bash
if [ -z $1 ] ; then
echo "Please specify ruby version to use. Exiting..."
exit 1
end
if [ ! -f /usr/local/rvm/environments/ruby-$1 ] ; then
echo "Please specify correct ruby version to use. Exiting..."
exit 2
end
if [ -z $2 ] ; then
echo "Please specify ruby script to execute. Exiting..."
exit 3
end
source /usr/local/rvm/environments/ruby-$1
ruby "$@"
用法:
script.sh 2.1.3 /etc/sensu/plugins/cpu_check.rb
希望它有所帮助。