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