#!/usr/bin/env ruby
#################################################################
## Name: getcpuram.rb ##
## Desc: Obtain CPU% or RAM Usage with only the PID of process ##
## Licence: BSD ##
## Author: Marc Lagrange <markocpc@gmail.com> ##
## Usage: CPU%: getcpuram.rb cpu PID ##
## RAM : getcpuram.rb ram PID ##
#################################################################
pid = ARGV[1]
type = ARGV[0]
def ps_get(type_fnc, pid_fnc)
if pid_fnc =~ /\A[+-]?\d+\z/
# its an integer
if pid_fnc.length > 5
# PID too big
else
# OH ! I'm happy, it's a PID !
cmd = "ps -p #{pid_fnc.to_s} -o #{type_fnc}="
res_cmd = %x[#{cmd}]
if type_fnc == 'rss'
if res_cmd.empty?
else
ram_mb = res_cmd.to_i / 1024
return ram_mb.to_s
end
else
return res_cmd.strip unless res_cmd.empty?
end
end
else
end
end
case ARGV[0]
when /cpu/i
# first arg = cpu
cpu_reply = ps_get('pcpu', pid)
puts "Cpu: #{cpu_reply}%"
when /ram/i
# first arg = ram
ram_reply = ps_get('rss', pid)
ramp_reply = ps_get('pmem', pid)
puts "Ram: #{ram_reply.strip}MB - #{ramp_reply.strip}%"
when /perc/i
ramp_reply = ps_get('pmem', pid)
puts ramp_reply.strip
when /mb/i
ram_reply = ps_get('rss', pid)
puts ram_reply.strip
else
#first arg is PID ?
cpu_reply = ps_get('pcpu', type)
ram_reply = ps_get('rss', type)
ramp_reply = ps_get('pmem', type)
puts "Cpu: #{cpu_reply.chomp}%, Ram: #{ram_reply.chomp}MB - #{ramp_reply.chomp}"
end