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()
Alias for: mem_usage_virt
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