Niveau :      
Résumé :accton ; ac ; sa ; lastcomm

Le noyau linux fournit une fonctionnalité ancienne, mais parfois bien utile nommée process accounting. Pour ceux qui compilent leur noyau elle est disponible dans les options générales sous le nom "BSD process accounting".

Pour pouvoir en profiter sur votre système, il faut aussi disposer des commandes disponibles dans le paquet acct. Ces commandes sont peu nombreuses. La première est accton qui active ou désactive l'accounting sur le système. La plupart des distributions incluent un fichier dans init.d appelant cette commande au démarrage.

Une fois l'accounting activé, les données liées aux processus sont stockées dans /var/log/account/pacct (ou équivalent). Les autres commandes du paquets servent à lire ces données.

Les plus importantes sont sa et lastcomm. Notons tout de même ac qui donne le temps de connexion total des utilisateurs et last (en provenance d'un autre paquet) indiquant les dates de connexion des utilisateurs. Un système non GNU vous proposerait des commandes supplémentaires.

sa permet d'obtenir des statistiques sur le lancement des processus.

lastcomm permet d'obtenir une liste de commandes lancées par utilisateur.

Usage

lastcomm permet de surveiller l'activité utilisateur sur le système. On peut ainsi retrouver qui a fait quoi en cas de problème (si vous pouvez garantir le fichier de log bien sûr :-). Un BOFH peut même s'amuser à espionner en temps réel ses utilisateurs avec un watch -d.

Quelques exemples :

# lister les commandes lancées récemment par un utilisateur
$ lastcomm user
# rechercher dans l'historique qui a lancé une commande donnée et quand
$ lastcomm apachectl
# savoir quelles commandes ont été lancées directement depuis le terminal physique de la machine 
$ lastcomm --tty tty1

sa de son côté permet de faire des statistiques et ainsi de savoir qui ou quoi consomme les ressources de la machine. Notez que le résultat inclue toujours une ligne sans nom, il s'agit du total. D'autre part il y a souvent une ligne ***other* contenant tout ce qui n'a été appelé qu'une fois résumé sur cette ligne.

Quelques exemples :

 
# lister commandes qui ont tourné le plus longtemps
$ sa --sort-real-time | head

# lister les commandes qui consomment le plus d'io
$ sa -d | head

# lister toutes les commandes avec l'utilisateur qui les a lancées
$ sa -u

# consommation par utilisateur
$ sa -m

La sortie contient en sortie le nombre d'appels, le temps passé, (re) la quantité de cpu consommé (cp en secondes), le nombre d'io moyen (avio, très pratique pour diagnostiquer quel processus utilise le disque), la mémoire consommée par seconde (k, cette valeur n'est pas très intuitive)

sa inclut aussi un système de summary des données que je n'ai jamais compris. Il est très mal documenté et n'a pas l'air de fonctionner sur GNU que sur les autres unix. La lecture du source ne m'a pas d'ailleurs convaincu sur son utilité. Si quelqu'un a une explication plus complète, je suis preneur.

Le manuel est un peu cryptique mais avec quelques essais on s'en sort. Si ces options ne vous conviennent pas, vous pouvez lire directement le fichier acct avec la commande dump-acct. Vous pouvez ainsi faire tout ce que vous voulez du contenu et scripter la récupération des résultats et le stockage pour des statistiques, par exemple dans rrdtool.