Sha256: 8cf2abeccc2eff5f2964810475e7a01048c00a9dd28c578703c24b63cd9a612a
Contents?: true
Size: 1000 Bytes
Versions: 3
Compression:
Stored size: 1000 Bytes
Contents
module Freyr class ProcessInfo attr_reader :pid, :rss, :vsz, :pcpu, :pmem, :ruser, :command def initialize pid @pid = pid end def alive? Process.getpgid(pid) true rescue Errno::ESRCH false end def ps return if !pid || pid.to_s.empty? @ps_info ||= begin 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 end def port `lsof -p #{pid} -P | egrep TCP.+LISTEN`.match(/\*:(\d+)/)[1].to_i rescue nil end def mem_in_mb @rss/1024.0 end class << self def [] *args n = new(*args) n.ps ? n : nil end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
freyr-0.5.2 | lib/freyr/process_info.rb |
freyr-0.5.1 | lib/freyr/process_info.rb |
freyr-0.5.0 | lib/freyr/process_info.rb |