Monitor memoire en bash

Tags:: bash :: linux

Décidément, j'adore le bash... en quelques 120 lignes de code (environ) voilà que j'ai trouvé une manière de monitorer la mémoire et la charge CPU d'un process en cours ou d'une commande donnée en argument. Et le plus sympa là dedans, c'est que je génère une courbe (via gnuplot).

Voici par exemple une courbe qui vérifie la charge de Xorg (pid 5933) pendant que je tape mon billet... je vous refile la commande tout de suite:


./memonit -akt "Monitoring Xorg a few seconds" -s 0.1 -f 500,300 -o Xmonitor.png -p 5933
 

Xmonitor

Pas très probant, alors je lance midori et je navigue:


./memonit -akt "Monitoring Midori a few seconds" -s 0.1 -f 500,300 -o midori_monitor.png -- midori
 

midori_monitor

Le script est ici: http://www.metal3d.org/tools/memonit, récupérez le et posez le sur votre poste. Rendez le exécutable et appelez l'aide:


chmod +x ./memonit
./memonit -h
memonit [-aghmk] [-s timer] [-p pid] [-o output] [-t title] [-f W,H] -- [command]
Options:
   -a  set autoscale On
   -g  set grid to On
   -p  pid to monitor
       if not given, command has to be given
   -h  print this help
   -o  img output filename (must be terminated by png, svg or jpg)
   -t  title (double quoted)
   -m  get memory in mega (default octet)
   -k  get memory in ko   (default octet)
   -s  get memory every n second (n could be float to get miliseconds)
       default is 0.1 second
   -f  format width,height if -o option given (size could be dynamically changed if gnuplot term used)
 

Vous pouvez donc appeler le script soit avec un pid, soit avec une commande en argument. Dans le cas où vous ne donnez pas de sortie, gnuplot affichera une fenêtre avec la courbe. Vous aurez alors à loisir de modifier des options dynamiquement comme afficher la grille ou non, recaler la taille du graphique, etc...

Notez enfin que je conseille d'utiliser une sortie SVG qui vous permettra de modifier la courbe dans un logiciel du genre Inkscape.

Bref, sachez que j'ai deux soucis en cours:

  • le temps utilisé entre chaque vérification de la mémoire est très irrégulier... ne pensez pas que donner -s 0.1 soit fiable, il se peut que vous ayez des écarts de temps allant de 0.1 à 1 seconde !
  • l'option -g n'est pas encore active... la grille apparait par défaut.
  • je ne comprend pas encore pourquoi lorsque je spécifie des options je dois mettre "--" avant ma commande et pourquoi ne pas le mettre si je ne donne pas d'options

Ha oui dernière chose, pensez à encapsuler la commande à lancer entre guillemets si vous utilisez des options à cette dernière, par exemple:


./memonit -ak -t "monitor nautilus startup" -f 500,300 -o nautilus_monit.png -- "nautilus --no-desktop --browser"
 

nautilus_monit

N'utilisez pas ce script pour des tests réels mais plutôt en tant qu'estimation... C'est juste un outil pratique, pas un outil de statistiques fiables ! j'en suis conscient mais ce n'est pas le but.

Personnellement je m'en sers pour voir l'état de apache dans une situation de stress avec l'option -s 1 pour ne voir l'état que toutes les secondes. Je m'en sers aussi pour tester roadsend php, des scripts python, perl etc... afin de savoir quel langage est plus optimal pour certaines tâches.

Bref... je m'en sers :)

IMPORTANT: mon script s'efforce de prendre le pid du processus ainsi que les enfants qui en découlent que ce soit une commande données en argument ou un pid. Par contre, dans certains cas, le parent génère des processus qui ne sont par rattachés... ces scripts ne sont donc pas enfants et ne sont pas appliqué aux stats. Tentez alors de modifier le script à votre guise pour qu'il réagisse à votre demande.

Utilisez le code barre pour ouvrir le ticket dans votre mobile:
This ticket on you mobile

Pas de commentaire pour le moment

Ajouter un commentaire
Veuillez répondre à la question suivante : Pim pam et tapez "poom" sans les guillemets

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F178

Tags

Blog Copix Communication PC Config Fedora Vidéo Humour Autre Web Materiel Informatique PHP Développement Mootools HTML Linux WEB IE CSS Vista Microsoft Sympa XHTML Quizz Widget Klik CWE Voeux Bonne année Musique CCRMA Son Audio MAO Reconnaissance vocale Windows Mac Compiz MacOS Mysql Sun Base de données BD Screenlets Screenlet RPM compiz Ubuntu Live FireFox Derambarsh Facebook media informations Sécurité javascript SSH Commande Marketing concours ipod wii QT Trooltech Nokia Libre Logiciels GPL Attali Gnome Dock Compiler Bench undelete reiserfs recovery recover Thread Serveur Optimisation Server Apache Album RSS Flash Air XML Firefox Blender Opensource Orange Internet LiveBox Animaux Droits Logiciels Libres Google Loi RBS netcat Bash Téléphone Spam 3D NIDIA Standards Widgets Merise UML Streaming Developpement Perl MySQL Firewall Parfeu Bayes Novell Réseau Python LVS Salon FTP Dedibox Chrome Administration IRC Gentoo troll video Nouveauté Finance Etudiant spéctacle OpenOffice Javascript Java Info Eclpise ATI design mootools KDE Bureau Design GNU C Pages Jaunes Fun Bijoux Art mail Admin vmware fedora linux VirtualBox VMWare Qemu KVM vim Grep Fglrx Webkit GTK google web JQuery Coup de gueule coup de gueule Lois SVG Raycaster Canvas Hadopi Desktop Jeux Les Sims développement astuces Screen firefox Mobile Safaru Wine bash commande astuce Wave ooc C++ C# Netbook Hercules Bureautique Twitter Safari W3C chrome kazehakaze midori navigateur gecko webkit Links Liens Pyhon Nouvelles Metal Perso Conférence JDLL PCC Roadsend OOC News Acteur Cinéma Chanteur Seven windows orthographe pcc php jdll Slide Application mysql Html twitter python screen curses SVN Android Gphone iPhone OpenGL MindMap Projet Javascrtip Ajax Guitare Tab Tablature JSON firebug Chromium Iphone Titanium music sound android ogg ogv streaming

  • twitter entries...
follow me on Twitter

Valid XHTML 1.0 Strict