class Cloudscopes::System

Public Instance Methods

bluepill_ok?(name) click to toggle source
# File lib/cloudscopes/system.rb, line 29
def bluepill_ok?(name)
  bin = Dir['/usr/local/rvm/gems/ruby-*/bin/bluepill','/usr/local/bin/bluepill'].first
  return false unless bin
  %x(#{bin} #{name} status 2>&1).split("\n").
    select { |ln| ln =~ /pid:/ }.
    collect { |ln| ln =~ /pid:(\d+).*:\s*(.*)/ and { pid: $1, status: $2 } }.
    all? { |proc| proc[:status] == "up"}
end
cpucount() click to toggle source
# File lib/cloudscopes/system.rb, line 9
def cpucount
  File.read("/proc/cpuinfo").split("\n").grep(/^processor\s+/).count
end
iostat() click to toggle source

Read www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats for the field meanings this method returns fields 4~14 as sum for all devices (as array indexes 0..10)

# File lib/cloudscopes/system.rb, line 15
def iostat
  File.read("/proc/diskstats").split("\n").collect do |dev|
    dev.gsub(/^\s+/,"").split(/\s+/)[3..13].collect(&:to_i) 
  end.inject() do |sums,vals| 
    sums ||= vals.collect { 0 } # init with zeros
    sums.zip(vals).map {|a| a.reduce(:+) } # sum array values
  end
end
loadavg5() click to toggle source
# File lib/cloudscopes/system.rb, line 5
def loadavg5
  File.read("/proc/loadavg").split(/\s+/).first.to_f
end
ps() click to toggle source
# File lib/cloudscopes/system.rb, line 38
def ps
  Cloudscopes::Process.new.list
end
service(name) click to toggle source
# File lib/cloudscopes/system.rb, line 24
def service(name)
  %x(PATH=/usr/sbin:/usr/bin:/sbin:/bin /usr/sbin/service #{name} status 2>/dev/null)
  $?.exitstatus == 0
end