lib/freyr/process_info.rb in freyr-0.3.4 vs lib/freyr/process_info.rb in freyr-0.3.5

- old
+ new

@@ -1,5 +1,33 @@ module Freyr class ProcessInfo - attr_accessor :user, :pid, :cpu, :mem, :vsz, :rss, :tt, :stat, :started, :time, :cmd + attr_reader :pid, :rss, :vsz, :pcpu, :pmem, :ruser, :command + def initialize pid + @pid = pid + end + + def ps + return if !pid || pid.to_s.empty? + info = `ps p #{pid} -o pid,rss,vsz,pmem,pcpu,ruser,command` + match = info.match(/#{pid}\s+(\d+)\s+(\d+)\s+([\d\.]+)\s+([\d\.]+)\s+(\w+)\s+(.+)/) + return unless match + @rss = match[1].to_i + @vsz = match[2].to_i + @pmem = match[3].to_f + @pcpu = match[4].to_f + @ruser = match[5] + @command = match[6] + info + end + + def mem_in_mb + @rss/1024 + end + + class << self + def [] *args + n = new(*args) + n.ps ? n : nil + end + end end -end \ No newline at end of file +end