Process CPU, MEM watcher

Download | Vote Up (0) | Vote Down (0)
#! /usr/bin/ruby
require 'optparse'

pids = nil
OptionParser.new do |opts|
    opts.banner = "Usage: ruby #{$PROGRAM_NAME} [options]"
    opts.on("-p pid", "--pid", "PID to inspect"){ |pid| pids=pid }

  opts.on( '-h', '--help', 'Display this screen' ) do
     puts opts
     exit
  end

end.parse!

if pids.nil? && ARGV.empty?
    puts "Usage: ruby #{$PROGRAM_NAME} process_name" # $0
    exit
end

if pids.nil?
    pids =  `pgrep #{ARGV[0]}`.split("\n").map(&:to_i)
end

total_mem = 0
total_cpu = 0
[*pids].each do |pid|
    data = `ps u -p #{pid}`.split("\n")[1].split(' ')
    total_mem += data[3].to_f
    total_cpu += data[2].to_f
    puts "========"
    puts "Process Name: #{data[10]}"
    puts "\tCPU usage: #{data[2]}%"
    puts "\tMemory usage: #{data[3]}% - #{data[5]}kB\n"
end

if [*pids].size > 1
    puts "Total:"
    puts "\tCPU usage: #{total_cpu}%"
    puts "\tMemory usage: #{total_mem}%"
end

ex0ns


Be the first to give feedback !

Please login to comment !