Derniers Posts

  • Ruby and oracle shared libraries

    You may experience the same problem as below if you are using the ruby-oci8 gem to connect to an oracle database : require ’oci8’ $ ruby test.rb /usr/lib/ruby/gems/1.8/gems/ruby-oci8-1.0.6/lib/oci8lib.so : libclntsh.so.10.1 : cannot open shared object (...)

  • Creating and Applying Patches

    You sometimes need to use patches to hold some code changes to keep it safe and eventually apply it again later. Using Subversion You can easily create a path file from a svn checkout like this : $ svn diff Index : testfile (...)

  • Max execution time with ruby threads

    This post will describe a way to define a maximum execution time for a operation using threads. Let’s start with a really simple program which takes 5 seconds to run : start=Time.now sleep 5 puts "Script finished in #Time.now-start" Let’s write a simple (...)

  • JVM Out Of Memory notification

    This is a quick tip to share a technic to be notified of an OutOfMemory exception. This has been made possible thanks to the new 1.6.0 -XX:OnOutOfMemoryError JVM option. Let’s write a simple memory consumer java program : public class Oom private (...)

  • Metaprogrammation ruby

    Pour suivre cet article sur les metaclass ruby, il faut bien avoir en tête certaines bases du langage ruby. Soupçonner l’existence des metaclass Ruby vous permet de définir et redéfinir à volonté des méthodes sur n’importe quel objet : o = Object.new def (...)

  • Quelques bases de ruby

    Ce billet en prépare un autre sur les metaclass de ruby. Mais pour bien pouvoir le comprendre, il faut bien avoir conscience de certaines notions fondamentales sur le langage. 1. Visibilité des méthodes public : toujours accessible. private : accessible (...)

  • Buffer overflow : détournement de variable

    Voici un deuxième tutoriel sur les buffer overflow, après le premier qui n’était pour moi qu’une initiation. J’ai depuis approfondis le sujet sur la base du mythique Smashing the stack for fun and profit duquel je me suis largement inspiré. Cet article (...)

  • Javascript et cross domain

    Comme vous le savez sûrement, les moteurs Javascript des navigateurs restreignent l’accès dynamique à des URLs qui sont sur des noms de domaine différents de la page courante, et cela pour des raison de sécurité ( voir XSS ). Ainsi, le script suivant ne (...)

  • Les alertes Zabbix

    Deuxième billet sur Zabbix en forme de mini tutoriel comme toujours. Aujourd’hui on va voir comment on configure Zabbix pour recevoir des alertes mail lorsqu’un trigger remonte une erreur. Ca n’est pas tellement compliqué mais on oublie facilement une étape. (...)

  • Zabbix 1.4.1 - premiers pas

    Un petit billet sur Zabbix, un outil de monitoring intéressant qui fait de plus en plus d’adeptes. Installation Note pour les utilisateurs de dédibox - Sept 08 : Si vous voulez installer Zabbix sur une dédibox en lenny vous pourriez avoir un problème avec (...)

  • Installer rubygems dans un répertoire user

    Cet article vous expliquera comment installer rubygems si vous n’avez pas le droit root sur votre machine. On va installer rubygems dans le répertoire $HOME/gems/ : % mkdir /home//gems/ On va s’appuyer sur la documentation officielle sur le site de (...)

  • Téléchargement d’un fichier en Java

    Vous avez un tableau de byte[] et vous voulez proposer de le downloader ? Ce post est fait pour vous. Je suppose que vous êtes dans votre Servlet/Controller/ActionBean ou autre et que vous avez à portée de main une jolie HttpServletResponse qui ne demande (...)

  • Tip : trigger javascript

    Je partage un petit bout de code qui pourrait vous servir pour réaliser des trigger en Javascript, c’est simple et rapide : Imaginons que vous avez une bibliothèque qui gère des appels asynchrones vers un webservice distant que vous attaquez en AJAX. Vous (...)

  • LVM : Ajouter un Volume Logique

    LVM, ou Logical Volume Manager, est un puissant outil qui permet de redimensionner ses partitions "à chaud" et surtout postérieurement à l’installation de la machine. Cet outil créé une couche d’abstraction entre les disques durs physiques et les "volumes" que (...)

  • Résoudre les conflits APT

    Voici un deuxième petit billet sur la résolution de conflits de packages (voir le premier article sur apt). Un beau matin je me retrouvais en plein upgrade de serveur et un conflit est apparu me signalant qu’un paquet essayait d’installer un fichier qui (...)

  • Recevoir les alertes mail de sa machine

    Ce petit tuto vous permettra de recevoir les mails qui sont envoyés à localhost, notamment ceux qui sont envoyés par votre machine pour communiquer avec vous lorsque quelque chose ne va plus. On considérera <user> comme le nom de votre utilisateur sur (...)

  • Tunnel SSH

    Après quelques mois d’absence, me revoila avec un nouveau post rapide sur la création d’un tunnel SSH. C’est une technique simple à mettre en place et qui peut dépanner dans certains cas :) Pourquoi faire ? Le tunnel SSH est utile lorsque vous voulez vous (...)

  • Debian : monter une partition windows

    On suppose que la partition à monter est /dev/sda1. Dans tous les cas, il faut créer un point de montage : # mkdir /windows Montage à la volée : # mount /dev/sda1 /windows # mount /dev/sda2 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type (...)

  • Reverse Proxy

    Un petit billet sur le Reverse Proxy d’Apache. Voici comment le mettre en place de manière très simple : la conf apache : ProxyRequests Off Order allow,deny Allow from all Order allow,deny Allow from all ProxyPass / http://127.0.0.1:8080/ (...)

  • Apache : dynamic virtual hosts

    Un court article sur la gestion dynamique de virtual hosts par Apache. Mon problème était le suivant : comment faire pointer tout mes vhost vers une seule et unique appli ? La solution est donnée par la documentation Apache sur le mass virtual hosting. mod (...)

  • Installation de Munin

    Munin, outil de monitoring système incroyablement simple d’installation et d’utilisation. Installation Personnellement je ne m’en sers que pour monitorer mon serveur, mais munin fonctionne sur le mécanisme client-serveur pour la remontée d’infos. Là mon (...)

  • Git via ssh

    "dumb" protocols Au départ, j’ai voulu tester Git over https. Après quelques recherches et problèmes en tout genre, il semblerait que cette méthode soit très peu utilisable en pratique : il faut exécuter la commande ’git-update-server-info’ dans le repository (...)

  • Démarrage de votre appli rails

    Petit article qui fait la lumière sur les sources de ruby et de ses gems. load path Le "load path" est soit $LOAD_PATH ou $ : % irb irb(main):001:0> $ : => ["/usr/local/lib/site_ruby/1.8", "/usr/local/lib/site_ruby/1.8/i486-linux", (...)

  • Rester à jour sur Ruby & Rails

    Cet article est le résultat d’un sondage qui tente de regrouper différentes sources d’information pour rester à jour sur les évolutions de technos autour de Ruby et Rails. Les sources énoncées ici sont toutes gratuites. RSS Énormément de sites parlent de Ruby (...)

  • Mémoire sous linux

    Cet article regroupe pas mal d’infos que j’ai pu récupérer de ci de là, autour de la mémoire en général (morte, vive, cache ...) Disque dur Un disque dur est la superposition de plusieurs surfaces magnétiques circulaires : Chaque "disque" est découpé en (...)

  • Mantis Bug Tracker sur Lenny

    Installation $ apt-get install mantis Configuration : fichiers Dans le fichier /etc/mantis/config_db.php, paramétrez les valeurs par défaut. Je crois que cette étape est optionnelle puisque ces informations vois seront demandées par un formulaire par la (...)

  • JDBC, JRuby et DBI

    Comment utiliser un driver Java en Ruby ? Dans mon cas, il s’agit d’une base de données Adabas. Le driver ruby n’existe pas encore, mais il existe le driver Java (de.sag.jdbc.adabasd.ADriver). Installer JRuby Première chose à faire : installer JRuby. (...)

  • Trac, Integrated SCM - Project Management

    Cet article détaille l’installation "normale" de Trac puis l’installation sur Debian Sarge à partir d’une archive stable, avec le plugin pour Mercurial. Installation de Trac Trac is a minimalistic approach to web-based management of software projects. Its (...)

  • Tutoriel Mercurial + SSL + Apache2

    Mercurial : a fast, lightweight Source Control Management system designed for efficient handling of very large distributed projects. Voici brièvement les éléments mis en oeuvre pour monter un serveur Mercurial sécurisé (ssl) avec restriction d’accès (...)

  • Tutoriel : Apache - SSL - Subversion

    Cet article va détailler comment paramétrer Apache et Subversion en HTTPS. C’est pas bien méchant, on y retrouve les grandes étapes indispensables : Création d’un dépot Créer un nom de domaine sécurisé (Apache+SSL) Relier les deux avec libapache2-svn (webdav) (...)

  • Conseils simples pour un Windows stable

    Cet article s’adresse aux personnes qui ont un ordinateur et qui veulent configurer Windows pour qu’il fonctionne « correctement ». Tous les logiciels proposés sont gratuits. Cet article est en fait destiné à mon entourage et qui me demande souvent de réparer (...)

  • Des outils pour Ruby

    De la documentation au tests, Ruby fourmille d’outils qui aide les développements au quotidien. Cette liste n’est pas exhaustive mais je penses qu’elle permet d’avoir un bon aperçu. Cette liste est largement inspirée de l’article anglais (...)

  • Ajax.updater et Ajax.SlideUp

    Voici un petit article qui détaille la réalisation d’un appel Ajax qui va apparaître avec un petit effet. Le tout est réalisé avec Prototype et Scriptaculous. L’appel au serveur Dans notre code HTML, on va préparer un DIV qui va recevoir le contenu HTML renvoyé (...)

  • Mémo Ruby

    Après la conférence de Paris on Rails 2007, je penses que Ruby a de gros avantages, surtout en terme de temps de développement, alors je m’y mets une fois pour toutes. Cet article trace les grandes lignes des spécificités de Ruby, soit en terme de convention de (...)

  • FeedBurner avec SPIP

    Cet article détaille les étapes pour intégrer FeedBurner à un SPIP existant. Inscription à FeedBurner Créez un compte, renseignez le nom de l’url que vous souhaitez pour votre site, du type : Référencez ensuite sur votre site web un fil RSS avec l’URL de (...)

  • Stats : Awstats sur Debian Sarge

    Awstats est un soft qui a fait ses preuves en tant que analyseur de logs et qui va pouvoir vous sortir la fréquentation de votre site de manière extrêmement détaillée. Installation # apt-get install awstats Configuration Awstats D’abord allez dans (...)

  • Paris on Rails 2007

    Je reviens de la conférence sur Ruby on Rails (RoR) le 10 Décembre à la Villette : "Paris on Rails". J’ai beaucoup entendu parler de RoR, toujours en bien, j’ai eu à programmer rapidement quelques scripts pour récupérer des informations dans une BDD mais je ne (...)

  • Générer un sitemap SPIP

    Plugin Il y a un plugin tout prêt pour ça disponible sur SPIP zone au nom de sitemap_x_x.zip. Prenez la dernière version et décompressez le contenu dans le répertoire "plugins/" à la racine du SPIP (créez le si besoin). Vous aurez alors accès au lien vers la (...)

  • Fetchmail pour recevoir son Gmail

    Voila un petit article pour dire à Fetchmail de récupérer les emails stockés sur son compte Gmail. Installation # apt-get install fetchmail Configuration de Gmail Dans Gmail, allez dans "Settings", puis dans l’onglet "Forwarding and POP/IMAP". Dnas la (...)

  • Cryptographie : comprendre SSL

    Rivest Shamir Adleman, ce sont les noms des 3 grands mathématiciens qui ont conçus le très utilisé algorithme RSA. Le RSA s’est imposé comme réponse fiable aux problématiques de sécurité grandissantes. Le principe de la clef symétrique C’est la technique la plus (...)

  • Analyser ses logs avec Logcheck

    Logcheck est un petit outils très pratique de la Debian qui va vous éviter de devoir consulter vos fichiers de log régulièrement, il va vous envoyer un rapport par mail. # apt-get install logcheck syslog-summary Configuration Rajoutez simplement les (...)

  • Configurer Spamassassin pour Postfix

    Voici comment installer et configurer Spamassassin pour Postfix sur un Debian sarge. Spamassassin va scanner tous les mails entrant et les marquer ou non comme des spams. Installation Installez simplement Spamassassin : # apt-get install spamassassin (...)

  • Sécuriser Postfix avec Amavis et Clamav

    Vous voila donc avec un Postfix de configuré, et vous voulez maintenant mettre un antivirus pour filtrer les mails qui contiennent des virus, c’est article est pour vous. Amavis Amavis est un scanner de mail. Ce n’est pas un antivirus mais un outil qui (...)

  • Debian : Serveur de mail Postfix et Dovecot

    Le but de ce tutoriel est de faire le premier pas vers la configuration d’un serveur de mail. Il est fortement conseillé de lire l’article sur Amavis et Clamav pour la partie antivirus, puis l’article sur Spamassassin pour l’anti-spam. La sécurisation d’un (...)

  • Gérer ses backups sous Debian : backup-manager

    Une manière simple et rapide de mettre en place un système de sauvegarde automatique de ses données est d’utiliser le paquet "backup-manager". Installation Je suis sous Debian Sarge et j’utilise un dépot particulier (backport) pour backup-manager qui va me (...)

  • Backbone où est tu ?

    Backbones Quels sont les grosses architectures physiques qui gère le transport de données à travers le monde ? Qui a les liens très hauts débits qui constituent l’Internet mondial ? Voici quelques exemples de backbones dans le monde : Telia (Tele2...) : (...)

  • Une appli qui dessine

    Je vais vous décrire la manière dont je m’y suis pris pour reproduire approximativement des "dessins" genre motifs tribaux que je griffonne un peu partout, et qui (je n’ai pas honte de le dire), me plaisent beaucoup. Je fais des formes tentaculaires, qui (...)

  • XSS : Cross Site Scripting

    Les attaques par XSS consistent à réussir à passer les validations des filtres des applications web. Elles sont souvent à base de déspécialisations et d’encoding de code malicieux. Consultez une compilation de code à injecter qui peut passer ces filtres sur (...)

  • Mémo sur les scripts shell

    Petit mémo, cette fois sur le shell script. Ce sont donc quelques manipulations assez pratiques : Faire des opérations mathématiques $ a=1 ;echo $[a+1] 2 Créer un répertoire temporaire % mktemp /tmp/tmp.BHVdwY6358 Générer un timestamp timestamp=`date (...)

  • Une manière d’intégrer des vidéos dans SPIP

    Cet article n’est pas LA méthode unique et meilleure que les autres pour l’encodage et la publication de vidéos, c’est juste celle que j’ai été amené à utilisé dans le cadre d’un de mes projets. Le script D’abord un petit script qui va se charger de lister les (...)

  • 08
    13

    Mémoire sous linux

    Cet article regroupe pas mal d’infos que j’ai pu récupérer de ci de là, autour de la mémoire en général (morte, vive, cache ...)

    Disque dur

    - Un disque dur est la superposition de plusieurs surfaces magnétiques circulaires :

    - Chaque "disque" est découpé en plusieurs "pistes" (découpage circulaire) et en plusieurs secteurs géométriques (découpage longitudinal).

    - L’intersection d’un secteur géométrique et d’une piste d’un disque est appelé "secteur". C’est la plus petite quantité de donnée gérable au niveau physique (contrainte du disque dur).

    - La superposition des pistes des disques qui sont au même rayon est appelé un "cylindre". Un cylindre n’a donc vraiment pas d’existence physique.

    Inspecter son disque dur

    # fdisk -l

    Disk /dev/sda: 40.0 GB, 40007761920 bytes
    255 heads, 63 sectors/track, 4864 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0xeede9d79

      Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1          62      497983+  83  Linux
    /dev/sda2              63         184      979965   82  Linux swap / Solaris
    /dev/sda3             185        4864    37592100   8e  Linux LVM

    Cette commande nous informe que l’on a 255 "heads", donc 255 têtes de lectures, une pour chaque surface magnétique circulaire. Chacune de ces surface est découpée en 4864 pistes ("track", découpage circulaire) et 63 secteurs géométriques ("sectors", découpage longitudinal).

    A partir de là, calculons le nombre de secteur total. Pour chaque surface, on a : 4864 x 63 = 306432 secteurs. Pour l’ensemble du disque dur on a : 306432 x 255 = 78140160 secteurs sur le disque dur.

    On retrouve la taille des secteurs en faisant : 40007761920 / 78140160 = 512 octets.

    Système de fichier

    - Les Blocs

    D’après l’article de Wikipedia sur les Blocs mémoire, la taille des blocs en ext3 est toujours de 1Ko.

    Le bloc est la plus petite unité de stockage d’un système de fichiers (utilisé sur une partition d’un disque dur) d’un système informatique. Le choix de la taille de bloc est effectué lors du formatage du disque, et influe sur les performances et sur la capacité utile du disque.

    On va utiliser le petit outil "dumpe2fs" pour retrouver la taille des blocks :

    # dumpe2fs  /dev/sda1  | grep "Block size"
    dumpe2fs 1.40.6 (09-Feb-2008)
    Block size:               1024

    Un bloc fait donc 2 secteurs (2 x 512 octets).

    - Inode ("Index NODE")

    Chaque fichier possède son propre inode, identifié par son numéro d’inode unique pour un périphérique donné. Les inodes sont regroupés dans la table d’inodes. Chaque inode possède les méta informations sur le fichier qu’il représente (droits, propriétaire, dates, adresse mémoire ...). C’est l’équivalent des "clusters" dans les systèmes de fichier type DOS.

    Note : comment connaître le numéro d’inode d’un fichier ? :

    % touch test_inode
    % ls -i test_inode
    120302 test_inode

    RAM - Random Memory Access

    - Pour connaître la quantité de RAM disponible :

    % cat /proc/meminfo
    MemTotal:      1028008 kB
    MemFree:         16836 kB
    Buffers:        202360 kB
    Cached:         259172 kB
    SwapCached:          0 kB

    La valeur de MemTotal est la quantité de mémoire utilisable par le système, sans le noyau. Cette valeur n’est pas fixe, et ne correspond donc pas exactement à la taille de vos barrettes de RAM. Pour s’en convaincre, redémarrez en mode "single user" et constatez :

    % cat /proc/meminfo
    MemTotal:      1028156 kB

    Pour avoir les détails hardware de votre RAM, utilisez le paquet ’lshw’ :

    % lshw
    (...)
    *-memory
             description: System Memory
             physical id: 1000
             slot: System board or motherboard
             size: 1GiB
           *-bank:0
                description: DIMM DDR Synchronous 533 MHz (1.9 ns)
                vendor: CE00000000000000
                physical id: 0
                serial: 50079321
                slot: DIMM_A
                size: 512MiB
                width: 64 bits
                clock: 533MHz (1.9ns)
           *-bank:1
                description: DIMM DDR Synchronous 533 MHz (1.9 ns)
                vendor: CE00000000000000
                physical id: 1
                serial: 50069310
                slot: DIMM_B
                size: 512MiB
                width: 64 bits
                clock: 533MHz (1.9ns)

    Ici il y a 2 barrettes de RAM d’une capacité de 512Mo (DDR 533).

    Notez que vous pouvez accéder directement au contenu de la RAM via le fichier /proc/kcore :

    # hexdump -C -n 256 kcore
    00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
    00000010  04 00 03 00 01 00 00 00  00 00 00 00 34 00 00 00  |............4...|
    00000020  00 00 00 00 00 00 00 00  34 00 20 00 03 00 00 00  |........4. .....|
    00000030  00 00 00 00 04 00 00 00  94 00 00 00 00 00 00 00  |................|
    00000040  00 00 00 00 28 07 00 00  00 00 00 00 00 00 00 00  |....(...........|
    00000050  00 00 00 00 01 00 00 00  00 10 80 38 00 00 80 f8  |...........8....|
    00000060  00 00 00 00 00 e0 ff 06  00 e0 ff 06 07 00 00 00  |................|
    00000070  00 10 00 00 01 00 00 00  00 10 00 00 00 00 00 c0  |................|
    00000080  00 00 00 00 00 00 00 38  00 00 00 38 07 00 00 00  |.......8...8....|
    00000090  00 10 00 00 05 00 00 00  90 00 00 00 01 00 00 00  |................|
    000000a0  43 4f 52 45 00 00 00 00  00 00 00 00 00 00 00 00  |CORE............|
    000000b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00000100

    le SWAP

    Linux offre la possibilité d’étendre sa mémoire vive en utilisant une partie du disque dur appelé "swap".

    C’est une sorte d’"extension" de la mémoire RAM sur disque dur. Le système va utiliser le swap lorsque la RAM est pleine, et écrire dessus à intervalles réguliers relativement espacés car le temps d’accès au disque dur est énormément plus long que celui de la RAM.

    # free
                total       used       free     shared    buffers     cached
    Mem:       1028008     891804     136204          0      28552     171988
    -/+ buffers/cache:     691264     336744
    Swap:       979956     217804     762152

    un "fdisk -l" donne :

      Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1          62      497983+  83  Linux
    /dev/sda2              63         184      979965   82  Linux swap / Solaris
    /dev/sda3             185        4864    37592100   8e  Linux LVM

    et un swapon -s :

    # swapon -s
    Filename                                Type                Size        Used        Priority
    /dev/sda2                               partition        979956        331208        -1

    fdisk nous donne une partition swap de 979965 x 1024 = 1003484160. free et swapon nous donnent une mémoire swap de 979956 x 1024 = 1003474944.

    Il y a donc 9216 octets de différence, soit exactement 9Mo (sur une machine de 1Go de swap). Sur une autre machine, la différence est exactement de 10Mo (avec 2Go de swap). Je suppose que cette espace est dédié à la gestion du système de fichier, mais je n’ai pas trouvé de documentation à ce sujet sur le net :x...

    - Les swap se font à certains intervalles de temps pour ne pas trop ralentir le système. Cet intervalle est indiqué :

    # cat /proc/sys/vm/swappiness
    60

    Mémoire Virtuelle

    La mémoire virtuelle est le nom donné à la RAM et au SWAP :

    VIRT = SWAP + RAM

    iomem

    Le fichier "/proc/iomem" renseigne le mapping entre les espaces adressables du système (CPU, carte mère, ...) et les ressources physiques correspondantes :

    % cat /proc/iomem
    00000000-0009efff : System RAM
    0009f000-0009ffff : reserved
    000a0000-000bffff : Video RAM area
    000c0000-000c7fff : Video ROM
    000cf800-000cffff : Adapter ROM
    000f0000-000fffff : System ROM
    00100000-3f7d17ff : System RAM
     00100000-002be914 : Kernel code
     002be915-00371383 : Kernel data
     003b5000-003f947f : Kernel bss
    3f7d1800-3fffffff : reserved
    50000000-53ffffff : PCI CardBus #04
    (...)

    On peut retrouver ces adresses si vous désassemblez un binaire. Ici j’utilise un programme C compilé :

    % gdb ./test
    GNU gdb 6.7.1-debian
    Copyright (C) 2007 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i486-linux-gnu"...
    Using host libthread_db library "/lib/i686/cmov/libthread_db.so.1".
    (gdb) disas main
    Dump of assembler code for function main:
    0x080483ea <main+0>:        lea    0x4(%esp),%ecx
    0x080483ee <main+4>:        and    $0xfffffff0,%esp
    0x080483f1 <main+7>:        pushl  -0x4(%ecx)
    (...)

    On constate que les adresses des instructions 0x080483ea 0x080483f1 0x080483ee ... sont bien dans la mémoire RAM "00100000-3f7d17ff : System RAM".

    Utilisation mémoire des processus

    - La commande ’top’

    Elle affiche : la mémoire RAM utilisé en pourcentage %MEM et en octets RES ; la mémoire virtuelle VIRT ; la mémoire utilisé pour le code du processus CODE et ses données DATA ; sa mémoire partagée SHR...

    Pour trier ces information, on utilisera la touche ’f’ pour sélectionner les champs affichés, puis les touches ’<’ et ’>’ pour changer les colonnes triées.

    Exemple de tri par par mémoire VIRTuelle :

     PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                      
    4521 benji     20   0  397m 198m  21m R 15.6 19.7  26:07.26 firefox-bin                                                                                                  
    3194 root      20   0  379m  46m 5396 S  4.0  4.7  11:47.93 Xorg                                                                                                        
    7618 benji     20   0  129m  33m  12m S  0.0  3.3   0:13.82 evolution

    Pour fini, on peut visualiser l’arborescence des processus avec la command ’pstree’ :

    # pstree -h -p -u -A -U
    init(1)─┬─acpid(2305)
            ├─apache2(3340)─┬─apache2(3379,www-data)
            │               ├─apache2(3381,www-data)
            │               ├─apache2(3382,www-data)
            │               ├─apache2(3383,www-data)
            │               └─apache2(3384,www-data)
            ├─arpwatch(3252,arpwatch)
            ├─atop(2321)
            ├─avahi-daemon(3115,avahi)───avahi-daemon(3116)
            ├─avahi-dnsconfd(3127)
            ├─bonobo-activati(4354,benji)───{bonobo-activati}(4355)
            ├─cron(3294)
            ├─cupsd(2341)
            ├─dbus-daemon(2085,messagebus)
            ├─dbus-daemon(4333,benji)
            ├─dbus-launch(4332,benji)
            ├─dhcdbd(3134)
            ├─dhclient3(1806)
            ├─drivemount_appl(4412,benji)
            ├─evolution(7618,benji)─┬─camel-lock-help(20094)
            │                       ├─spamd(11114)───spamd(11146)
            │                       ├─{evolution}(7627)
            │                       ├─{evolution}(7628)
            │                       ├─{evolution}(7631)
            │                       ├─{evolution}(7632)
            │                       ├─{evolution}(7633)
            │                       ├─{evolution}(7638)
            │                       ├─{evolution}(7663)
            │                       └─{evolution}(7668)
            ├─evolution-alarm(5076,benji)─┬─{evolution-alarm}(5077)
            │                             └─{evolution-alarm}(5090)
            ├─evolution-data-(5033,benji)─┬─{evolution-data-}(5034)
            │                             └─{evolution-data-}(5084)
            ├─exim4(2624,Debian-exim)
            ├─famd(3066)
            ├─festival(2639,festival)
            ├─firefox-bin(4521,benji)─┬─{firefox-bin}(4522)
            │                         ├─{firefox-bin}(4523)
            │                         ├─{firefox-bin}(4541)

    1 message en réponse à l'article

    • bouxroute ~ 5 février 19:24

      Pour visualiser l’occupation de la mémoire en temps réel, je recommande l’installation de "htop" ( apt-get install htop )

    Ce forum est modéré à priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.

    Qui êtes-vous ? (optionnel)

    (Pour créer des paragraphes, laissez simplement des lignes vides.)