Vous n'êtes pas identifié(e).
Pages : 1
Salut à tous
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
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
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
Super merci Coyotus
Mess With The Bests
Die Like The Rest
Hors ligne
Super merci Coyotus
Merci à toi d'avoir contribué à la section ruby
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
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
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
J'avais pas fais gaffe a la section ruby du forum
J'aime aussi ce langage dont je trouve la syntax plutot simple:
#!/usr/bin/env ruby
if File.zero?("cle.txt")
#!/usr/bin/env ruby
File.read('youhou.txt').include?('Bonjour')
#!/usr/bin/env ruby
tache = Thread.new do { `bash monautrescript.sh` }
Ou alors en définissant la durée d'un Thread:
#!/usr/bin/env ruby
longthread = Thread.new do
while true
puts "Thread ennuyeux de vérification "
sleep(10) # Temps avant la relance avant la vérif
end
end
Puts "Suite du script"
sleep(60) # durée de notre thread
end
Bref c'est assez sympa et je dois encore apprendre beaucoup de chose, notamment concernant la gestion de paquet pour essayer de me faire un petit scapy version ruby
Euh... et Gtk aussi j'oubliai
Dernière modification par Koala (30-09-2017 13:58:57)
Hors ligne
Pages : 1