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