how to get Windows top 10 cpu and memory process using ruby
Jaga Ray wrote in post #1185823:
how to get Windows top 10 cpu and memory process using ruby
Here some (old, but working w10) code for acquiring process list.
it use OLE for doing wmi request,
wmi is a kernel access (as realtimedatabase) which contain dynamic data
of windows kernel.
==
require ‘win32ole’
def make_list_process()
wmi = WIN32OLE.connect(“winmgmts://”)
lp = wmi.ExecQuery(“select * from win32_process”).enum_for(:each)
l=lp.map { |pr|
[pr.Caption.strip,pr.ProcessId,pr.PageFileUsage.to_s,pr.CommandLine.strip[0…90].ljust(90)]
rescue nil}
wmi.ole_free
text=l.sort_by { |a| a && a[2].to_i || 100000}[0…160].select {|l| l
&& true}
max=[0]*30
text.each { |line| next unless line; line.map! {|c| (c=~/[0-9]/) ?
c.to_s.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\1 "): c}}
text.map { |line| line.each_with_index.map {|c,i|
c.to_s.rjust(max[i])}}
end
def detail_process(pid)
wmi = WIN32OLE.connect(“winmgmts://”)
lp = wmi.ExecQuery(“select * from win32_process where
ProcessId=#{pid}”).enum_for(:each)
descr=lp.first
data={}
descr.Properties_.each { |x| data[x.name]=descr.send(x.name) }
wmi.ole_free
data
end
for wmi database, you can use WMIC.exe on cmd.com :
wmic process
wmic process where name=“ruby.exe” get commandline
CommandLine
D:\usr\Ruby\Ruby200\bin\ruby.exe
d:/usr/Ruby/local/winmonitor/monitoring.rb waitboot
ruby D:/usr/Ruby/local/PicoWebServer/webserver.rb
ruby …/img/reddit.rb
ruby notes.rb
Jaga Ray wrote in post #1185823:
how to get Windows top 10 cpu and memory process using ruby
you can also use ‘tasklist’ command.
option
/fo for specifi output format,
/v for verbose output : get many data on proces
titles=[]
pl=tasklist /fo csv /v
.each_line.to_a.each_with_index.map {|line,i|
if i==0
titles=line.chomp.split(/,/).map {|t| t[1…-2]}
p titles
end
next if i<2
data=line.chomp.split(/,/).map {|t| t[1…-2]}
titles.zip(data).each_with_object({}) {|(t,d),h| h[t]=d}
}
Result (in french! : field name are country-dependent) :
{“Nom de l’image”=>“cmd.exe”, “PID”=>“6052”, “Nom de la
session”=>“Console”, “Num\x82ro de session”=>“1”, “Utilisation
m\x82moire”=>“3\xFF144 Ko”, “\x90tat”=>“Unknown”, “Nom
d’utilisateur”=>“D-CZH01404CV\e”, “Temps processeur”=>“0:00:00”, “Titre
de la fen\x88tre”=>“N/A”}
{“Nom de l’image”=>“conhost.exe”, “PID”=>“16464”, “Nom de la
session”=>“Console”, “Num\x82ro de session”=>“1”, “Utilisation
m\x82moire”=>“4\xFF904 Ko”, “\x90tat”=>“Unknown”, “Nom
d’utilisateur”=>“D-CZH01404CV\e”, “Temps processeur”=>“0:00:00”, “Titre
de la fen\x88tre”=>“N/A”}
…
@Regis d’Aubarede : can you let me know execution steps for first
script?
my requirement is display top 10 memory and cpu consuming process with
process id and file name
Jaga Ray wrote in post #1185839:
@Regis d’Aubarede : can you let me know execution steps for first
script?my requirement is display top 10 memory and cpu consuming process with
process id and file name
Sorry, no time …
You should work à little bit