class Cloudscopes::Process::SystemProcess
Public Class Methods
new(id)
click to toggle source
# File lib/cloudscopes/process.rb, line 8 def initialize(id) @id = id.to_i @@maxpid ||= File.read('/proc/sys/kernel/pid_max').to_i raise "Invalid system process id #{id}" unless @id > 0 && @id < @@maxpid end
Public Instance Methods
exe()
click to toggle source
# File lib/cloudscopes/process.rb, line 30 def exe begin File.readlink(procpath('exe')) rescue Errno::ENOENT => e # ignore kernel threads '' rescue SystemCallError => e # report and ignore $stderr.puts "Error accessing process #{@id}: #{e.class}:#{e.message}" '' end end
exe_name()
click to toggle source
# File lib/cloudscopes/process.rb, line 41 def exe_name File.basename(exe) end
mem_usage_rss()
click to toggle source
# File lib/cloudscopes/process.rb, line 57 def mem_usage_rss statm.strip.split(/\s+/)[1].to_i * Etc.sysconf(Etc::SC_PAGESIZE) end
mem_usage_virt()
click to toggle source
# File lib/cloudscopes/process.rb, line 60 def mem_usage_virt statm.strip.split(/\s+/)[0].to_i * Etc.sysconf(Etc::SC_PAGESIZE) end
Also aliased as: mem_usage
method_missing(name, *args)
click to toggle source
# File lib/cloudscopes/process.rb, line 18 def method_missing(name, *args) raise ArgumentError.new("wrong number of arguments (#{args.length} for 0)") unless args.length == 0 begin File.read(procpath(name.to_s)) rescue Errno::ENOENT => e # ignore kernel threads '' rescue SystemCallError => e # report and ignore $stderr.puts "Error accessing process #{@id}: #{e.class}:#{e.message}" '' end end
procpath(field = nil)
click to toggle source
# File lib/cloudscopes/process.rb, line 14 def procpath(field = nil) "/proc/#{@id}/#{field}" end
uid()
click to toggle source
# File lib/cloudscopes/process.rb, line 45 def uid begin File.stat(procpath('mem')).uid rescue Errno::ENOENT => e nil end end
user()
click to toggle source
# File lib/cloudscopes/process.rb, line 53 def user Etc.getpwuid(uid || 0).name end