user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 07-01-2015 00:12:10

ZeR0-@bSoLu
Membre

memory watcher [ruby]

Salut à tous big_smile

je vous partage ce petit script en ruby que j'ai trouver je ne sais plus ou... xD
je vous donnerai bien la source malheureusement je n'en ai aucun souvenir...

bref voici le script !


[== Ruby ==]
#! /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

Pour l'utiliser :

[== Indéfinie ==]
ruby memwatcher.rb "le nom du processus dont vous voulez voir l'utilisation mémoire"

Mess With The Bests
Die Like The Rest

Hors ligne

#2 07-01-2015 10:36:07

IceF0x
#! Gourou Linux

Re : memory watcher [ruby]

J'ai un peu modifié l'affichage parce que la présentation c'était pas top

#! /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 "\tProcess Watcher"
    puts "==============================="
    puts "Process Name:\t #{data[10]}"
    puts "CPU usage:\t #{data[2]}%"
    puts "Memory usage:\t #{data[3]}% - #{data[5]}kB\n"
end

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

1420619763_2015-01-07-094031_1920x1096_scrot.png


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#3 07-01-2015 16:25:47

ZeR0-@bSoLu
Membre

Re : memory watcher [ruby]

Super merci Coyotus big_smile


Mess With The Bests
Die Like The Rest

Hors ligne

#4 07-01-2015 19:08:21

IceF0x
#! Gourou Linux

Re : memory watcher [ruby]

ZeR0-@bSoLu a écrit :

Super merci Coyotus big_smile

Merci à toi d'avoir contribué à la section ruby smile


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#5 07-01-2015 20:40:44

ZeR0-@bSoLu
Membre

Re : memory watcher [ruby]

J'essaye de partager un peu ce que j'ai ^^' mais j'ose pas des fois de peur que vous ayez déjà posté quelque chose du même style même si j'ai déjà parcouru l'intégrité du forum ^^'


Mess With The Bests
Die Like The Rest

Hors ligne

#6 31-08-2015 21:05:46

Dam's
Membre

Re : memory watcher [ruby]

Ah quel langage magnifique <3

Par exemple, 3 petites lignes suffises à remplacer l'appel de pgrep

#!/usr/bin/env ruby

def pgrep(prg)
  Dir['/proc/[0-9]*/comm'].map! do |file|
    file[/\d+/].to_i if open(file, &:read) =~ /#{prg}/o
  end.compact!
end

puts pgrep ARGV.shift || exit(1) if __FILE__ == $0

Niveau concision, difficile de faire mieux.

Hors ligne

Pied de page des forums