• STATISTIQUES
  • Il y a eu un total de 3 membres et 7078 visiteurs sur le site dans les dernières 24h pour un total de 7 081 personnes!


    1 membre s'est inscrit dans les dernières 24h!


    Membres: 2 608
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Astalavista
    Un site aux ressources incontournable depuis plusieurs années, Astalavista est réellement devenue un cl...
    Hacking
    [FR] Cyber-Hacker
    CH - Cyber Hacker est un jeu par navigateur de simulation de hack, programmez et envoyez vos virus et piratez les aut...
    Hacking
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [FR] Secuser
    Actualité de la sécurité informatique, fiches virus et hoax, alertes par email, antivirus gratui...
    Hacking
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Defi du gromanche] - Memoire, CPU d'un programme
01-06-2014, 16h36 (Modification du message : 01-06-2014, 16h48 par notfound.)
Message : #1
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
[Defi du gromanche] - Memoire, CPU d'un programme
Hello,

Bon, comme c'est dimanche, c'est parti pour un peu de code, rien de compliqué. Cela permettra à certain de s'occuper, et à d'autres de décuver ou encore de faire découvrir du code à Mamy.

Ça fait plusieurs fois que je me dis qu'il n'y a pas de programmes simples sur GNU/Linux pour sortir des infos simples sur un programme donné. (si vous en connaissez, n'hésitez pas à le mettre en PS avec votre reply)

Donc le sujet est simple : écrire un bout de code qui donne des infos (mémoire, CPU) d'un programme donne en paramètre.

J'ai code ça ce "matin", voici mon output :
[Image: 1401632236.png]

Bon, je ne vous demande pas de faire un truc comme ça, si juste les valeurs apparaissent, ça ira Smile

Niveau langage : osef, faites-vous plaisir.

À vos claviers les gromanches !
+1 (2) -1 (0) Répondre
01-06-2014, 17h58 (Modification du message : 01-06-2014, 18h02 par Dobry.)
Message : #2
Dobry Hors ligne
Tueur de lamouz
*



Messages : 206
Sujets : 25
Points: 73
Inscription : Aug 2011
RE: [Defi du gromanche] - Memoire, CPU d'un programme
J'ai pas le temps de faire bien plus recherché mais voici ma version ruby:
Code 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
 


Edition avec la possibilité de demander pour un PID en particulier, et affichage du total sur tous les proccessus trouvés
Aestuārium Erudītiōnis

There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
+1 (2) -1 (0) Répondre
01-06-2014, 18h06 (Modification du message : 01-06-2014, 18h06 par gruik.)
Message : #3
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [Defi du gromanche] - Memoire, CPU d'un programme
je proposerais bien quelque chose du genre :
Code BASH :
prog="chromium-browse"
ps -eL -o ucmd,pcpu,rss | awk -vnom="$prog" '
$1 ~ nom {
   cpu += $2;
   mem += $3
}
END {
   printf ("%s : %2.1f%% cpu, %dKo mem\n", nom, cpu, mem)
}'


à tester, si tu trouves pas les mêmes valeurs que ton script tu peux essayer de remplacer rss par vsz mais dans tous les cas le calcul n'est pas pas juste à priori, typiquement un thread a son propre pid mais il partage son espace d'adressage avec son threads group leader donc il y a pas lieu d'additionner en fait
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (1) -1 (0) Répondre
01-06-2014, 19h18 (Modification du message : 01-06-2014, 19h24 par notfound.)
Message : #4
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [Defi du gromanche] - Memoire, CPU d'un programme
Voici ma version, assez proche de celle de gruik puisque fait via awk, mais avec l'utilisation de top en mode batch et avec un nombre d'itérations a 1.

Code BASH :

#!/bin/bash

[ -z "$1" ] && { echo "Usage: $0 <program_name>" ; exit 1; }

readonly PROG="$@"
printf "+-----------------------+-----------------------+---------------+\n"
printf "|\t%10s\t|\t%s\t|\t%s\t|\n" "program name" "Mem (%) :: Size" "CPU (%)"
printf "+-----------------------+-----------------------+---------------+\n"

for P in $PROG; do
        top -b -n1 |tail -n+7|awk --re-interval 'BEGIN{
                                                        SIZE=0
                                                        CPU=0
                                                }
                                                /'
"$P"'/{
                                                        PROGNAME=$12
                                                        MEM+=$10
                                                        CPU+=$9
                                                }
                                                END{
                                                        if(length(PROGNAME)>8){sub(".{4}$","",PROGNAME)}
                                                        printf("|\t  %s \t|\t%d%% :: %.2f Go\t| \t%.2f\t|\n",PROGNAME,MEM, (MEM*4)/100, CPU)
                                                }'

done
printf "+-----------------------+-----------------------+---------------+\n"
 


Output :
[Image: 1401642167.png]

Voilou
+1 (2) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Adressage de la mémoire Serphentas 6 342 08-03-2013, 17h23
Dernier message: Serphentas

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut