Skip to content

Instantly share code, notes, and snippets.

@joannecheng
Created July 31, 2012 21:56
Show Gist options
  • Save joannecheng/3221022 to your computer and use it in GitHub Desktop.
Save joannecheng/3221022 to your computer and use it in GitHub Desktop.
jruby notes
# I have no idea what I'm doing.
require 'java'
Dir["sigar/*.jar"].each { |jar| require jar }
# import sigar class
# Must be java 1.7
import_sigar = org.hyperic.sigar
sigar = import_sigar.Sigar.new
shell = import_sigar.cmd.Shell.new
# Get State/Names of ProcessIDs
sigar.getProcState(0).getName()
# Kernel_task
sigar.getProcState(1).getName()
# launchd
# Get name of all procs
procs = sigar.getProcList()
procs.each do |p|
puts sigar.getProcState(p).getName()
end
# Get array of CPU percentages and Proc ids
cpu_perc = procs.map do |p|
{:pid => p, :percent_cpu => sigar.getProcCpu(779).getPercent() }
end
# Returns:
# [{:pid=>31872, :percent_cpu=>0.020239732756926705},
# {:pid=>31773, :percent_cpu=>0.0},
# {:pid=>30830, :percent_cpu=>0.0},
# {:pid=>30438, :percent_cpu=>0.0},
# {:pid=>29406, :percent_cpu=>0.0} ....
# Get top 3 percentages
cpu_perc.sort_by! {|c| c[:percent_cpu] }.reverse!
puts cpu_perc[0..2]
# [{:pid=>31872, :percent_cpu=>0.020239732756926705},
# {:pid=>7847, :percent_cpu=>2.186883962e-314},
# {:pid=>77320, :percent_cpu=>2.186883962e-314}]
# Search by process name
proc_by_names = procs.map do |pid|
proc = sigar.getProcState(pid)
if /iTunes/.match(proc.getName())
{:pid => pid, :percent_cpu => sigar.getProcCpu(pid).getPercent() }
end
end
# Search by process arguments
proc_by_arguments = procs.map do |pid|
proc = sigar.getProgArgs(pid)
if /p/.match proc
{:pid => pid, :percent_cpu => sigar.getProcCpu(pid).getPercent() }
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment