Une introduction à MultiTail

Linux Gazette n°95 - Octobre 2003

Folker van Heusden


Table des matières
1. Introduction
1.1. Qu'est-ce que MultiTail ?
1.2. Pourquoi ce texte ?
2. Les bases
3. Défilement
4. Fusionner des fichiers
5. Visualiser la sortie de programmes externes
6. Couleurs
7. Filtrer à l'aide d'expressions régulières
8. Options diverses
9. Est-ce tout ?

1. Introduction

1.1. Qu'est-ce que MultiTail ?

MultiTail vous permet d'afficher un ou plusieurs fichiers comme le programme tail original. La différence est qu'il crée des fenêtres multiples sur votre console (avec ncurses). La fusion de deux, voire de plusieurs fichiers journaux est possible. Il offre des couleurs lors de l'affichage des fichiers journaux (grâce à des expressions régulières), pour une reconnaissance plus rapide de ce qui est important et de ce qui ne l'est pas. Il est aussi capable de filtrer des lignes (également à l'aide d'expressions régulières). Il est doté de menus interactifs pour éditer des expressions régulières données, supprimer et ajouter des fenêtres. Des fenêtres contenant la sortie de scripts shell et d'autres logiciels sont également disponibles. Lors de l'affichage de la sortie de logiciels externes, MultiTail peut mimer la fonctionnalité d'outils comme watch ou similaire.


1.2. Pourquoi ce texte ?

Lorsque vous démarrez Multitail sans aucun paramètre, il efface l'écran et affiche deux touches sur lesquelles vous pouvez appuyer, ainsi qu'une brève explication de leur action. Vous pouvez ensuite appuyer sur n'importe laquelle de ces touches ou sur 'x', 'q', voire 'CTRL'+'C' pour sortir du programme. Pour connaître les paramètres de lignes de commande possibles, démarrez MultiTail avec le paramètre '-h' (pour «help» ou «aide»). L'aide fournie avec les méthodes décrites ci-dessus peut n'être pas suffisante, c'est pourquoi ce texte a été écrit. Si quoi que ce soit restait encore obscur après avoir lu ce document, n'hésitez pas à me contacter à l'adresse suivante : folkert CHEZ vanheusden POINT com.


2. Les bases

L'utilisation la plus triviale de Multitail est la suivante :

multitail [-i] fichier

Elle affiche le fichier 'fichier' dans la fenêtre de votre terminal. Dans la partie inférieure, une ligne (la ligne d'état) est affichée, comportant le nom du fichier, sa taille, et la date et l'heure de sa dernière modification. Vous pouvez rendre cette ligne d'état statique (non mise à jour) avec le paramètre de ligne de commande '-d'. Avec '-D', aucune ligne d'état n'est affichée. Vous ne devez spécifier le '-i' que si le nom de fichier commence par un tiret ('-'). Voici une commande plus complexe :

multitail [-i] fichier1 [-i] fichier2

Ceci scinde votre fenêtre de terminal en deux fenêtres. Dans chaque fenêtre, un seul fichier est affiché. Les deux fenêtres ont une ligne d'état indiquant des informations. La fenêtre contenant le 'fichier1' est affichée au-dessus de celle contenant 'fichier2'. Au lieu de les afficher l'une au-dessus de l'autre, vous pouvez les afficher côte à côte. Pour ce faire, vous pouvez saisir le '-s' sur la ligne de commande ou appuyer sur la touche 'v' pendant que le programme s'exécute.


3. Défilement

Vous pouvez naturellement faire défiler les fichiers présents. Pour ce faire, appuyez sur la touche 'b'. Lorsque vous affichez des fichiers multiples, vous obtenez d'abord un sélecteur de fichiers. S'affiche ensuite une fenêtre avec le contenu mis en cache du fichier sélectionné (c'est-à-dire, de la fenêtre). Vous pouvez alors le faire défiler avec les touches de curseur et les touches 'Page précédente' et 'Page suivante'. Appuyez sur 'x' ou 'q' pour sortir de cette fenêtre. Vous ne pouvez pas faire défiler le fichier entier, seulement les 100 dernières lignes. Pour redéfinir cette limite à une limite supérieure (ou inférieure), appuyez sur la touche 'm'. Vous êtes alors invité à saisir une nouvelle valeur, par exemple 1000. Ce paramètre peut également être défini sur la ligne de commande avec le paramètre '-m' valeur. Ce dernier permet de définir la limite pour le prochain fichier, '-M' valeur permet de définir ce paramètre pour tous les fichiers suivants sur la ligne de commande. Lorsque vous appuyez sur la touche 'm', le tampon actuel est réinitialisé : c'est donc aussi une autre manière d'appuyer sur la touche 'Entrée' plusieurs fois en exécutant 'tail -f' pour afficher un fichier.


4. Fusionner des fichiers

Il y a ensuite le paramètre '-I' : il est identique à '-i', mais seul '-I' fusionne deux ou plusieurs fichiers ensemble. Par exemple :

multitail [-i] fichier1 -I fichier2

Voici un exemple concret :

multitail /var/log/apache/access.log -I /var/log/apache/error.log

Ces deux exemples fusionneront la sortie des fichiers indiqués en une seule fenêtre. Ceci peut s'avérer utile avec, par exemple, les fichiers fournis dans le second exemple : celui-ci vous montre ce qui s'est produit juste avant qu'une erreur n'apparaisse dans le fichier 'errorlog' d'Apache.


5. Visualiser la sortie de programmes externes

Comme je l'ai mentionné en avant-propos, MultiTail va bien au-delà de l'affichage de fichiers ; la sortie d'autres programmes (scripts, exécutables, etc.) peut également être placée à l'intérieur d'une ou plusieurs fenêtres. Pour y parvenir, vous devez utiliser le commutateur '-l'. Par exemple :

multitail -l ls

Un autre exemple :

multitail -l "ping localhost"

Comme vous pouvez le voir, vous devez ajouter des guillemets autour de la commande lorsqu'elle exige des paramètres. Sinon, MultiTail ne sera pas en mesure de reconnaître quels paramètres sont destinés au programme sélectionné ou à MultiTail proprement dit. Vous pourriez avoir essayé l'exemple avec la commande ls : vous constatiez alors que MultiTail ferme automatiquement la fenêtre lorsque la commande externe s'est terminée. Il existe quelques options permettant de contrôler ce comportement. Par exemple le paramètre '-z' : lorsqu'il est indiqué, la fenêtre est simplement fermée, l'écran est rafraîchi et MultiTail continue sans la fenêtre contextuelle vous indiquant que le programme s'est arrêté.

Une autre option est : '-r intervalle' : elle provoque l'exécution de la commande toutes les intervalle secondes. Au lieu de '-r intervalle', l'option '-R intervalle' est également disponible : lorsqu'elle est transmise à MultiTail, elle lui fait exécuter la prochaine commande avec un intervalle de intervalle secondes, en affichant que la différence avec la précédente exécution de la commande ! Donc, si vous lancez MultiTail ainsi :

multitail -R 3 -l "netstat -p tcp"

vous ne constaterez que les changements d'états pour toutes les connexions TCP : les nouvelles connexions et les connexions sur le point de se terminer. Comme avec '-I fichier', '-L commande' fusionne aussi la sortie de la commande externe avec le fichier ou la commande qui précède. Donc, la sortie des commandes peut être sans risque fusionnée avec les fichiers journaux. Commandes multiples, fichiers journaux multiples, la plupart des choses que vous pouvez imaginer sont à votre portée.


6. Couleurs

Lorsque vous avez observé le défilement des fichiers journaux, il peut s'avérer un peu ardu au bout d'un moment, de reconnaître encore ce qui est important et ce qui ne l'est pas. À cause de cela, MultiTail a la capacité d'afficher des fichiers journaux en couleur. Lorsque vous attribuez le paramètre '-c', le prochain fichier ou la prochaine commande indiquée s'affiche en couleur. Il décide quelle couleur utiliser en examinant le fichier journal complet. Si vous souhaitez qu'il n'utilise que le nom de programme responsable de cette ligne de journal (lorsque vous surveillez les fichiers journaux de syslog par exemple), vous pouvez utiliser le commutateur '-cs'. La dernière option est le commutateur '-cS palette_couleurs'. En tant que paramètre, il exige le nom d'une palette de couleurs. Les palettes de couleurs sont lues dans le fichier 'multitail.conf', où l'initialisation a lieu en saisissant des expressions régulières à propos de quelle couleur utiliser pour quels «motifs». Par défaut, MultiTail cherche 'multitail.conf' dans le répertoire actuel et dans le répertoire '/etc'. Avec le paramètre '-z', vous pouvez explicitement établir quel fichier il devrait utiliser. Un exemple :

colorscheme:postfix
cs_re:yellow:status=sent
cs_re:magenta:queue active

La première ligne nomme la palette de couleurs actuelle. Les lignes 'cs_re' définissent des combinaisons d'expressions régulières et une couleur. Avec la première ligne 'cs_re', vous précisez que si MultiTail rencontre la chaîne 'status=sent' dans une ligne du fichier journal, il devrait l'afficher en jaune. La ligne suivante précise que la chaîne 'queue active' doit être affichée en magenta. Un autre exemple, un peu plus complexe :

colorscheme:syslog
cs_re:green:\[|\]
cs_re:blue:^... .. ..:..:..

La première ligne 'cs_re' définit toutes les occurrences de '[' ou ']' en vert et toutes les lignes commençant par une date au format 'Mon DD HH:MM:SS' en bleu. Pour plus de détails sur les expressions régulières , O'Reilly a publié quelques ouvrages en anglais et Maîtrise des expressions régulières en français sur ce thème. Une dernière chose à propos des couleurs : si vous utilisez '-C' (un 'C' majuscule) au lieu de '-c', toutes les lignes qui suivent utiliseront les paramètres que vous avez spécifiés à ce moment, à moins que vous ne les annuliez avec un nouveau paramètre '-cx' ou '-Cx'.


7. Filtrer à l'aide d'expressions régulières

Pour filtrer, MultiTail fait intervenir des expressions régulières. Pour ne pas compliquer les choses, il les utilise de la même façon que grep le fait : '-e' indique qu'une expression régulière suit et '-v' indique de l'inverser.

Exemples :

multitail -e "gnu-pop3d" /var/log/messages
multitail -v -e "ssh" -v -e "gnu-pop3d" -e "localhost" /var/log/messages

Le premier exemple montre seulement les lignes provenant de '/var/log/messages' qui disposent de la chaîne «gnu-pop3d». Le second exemple montre seulement les lignes qui n'ont pas la chaîne «ssh» et n'ont pas la chaîne «gnu-pop3d», mais ONT la chaîne «localhost».


8. Options diverses

Il existe quelques autres options :

-fcelle-ci oblige MultiTail à suivre le fichier. Supposons que le fichier original soit renommé et qu'un nouveau fichier soit créé avec le nom de fichier original : MultiTail commencera à surveiller le fichier doté du nom original (celui que vous avez saisi).
-u secondeslorsque vous utilisez MultiTail sur une liaison lente (une connexion par modem, voire au travers de HAM), vous pourriez être amené à avoir des mises à jour moins fréquentes. Grâce à ce paramètre, vous décidez à quelle fréquence MultiTail actualise l'écran. Le comportement par défaut consiste en une mise à jour immédiate.
-H intervallesi vous avez une connexion sur un hôte quelconque (sur lequel vous utilisez MultiTail) qui est automatiquement déconnecté si rien ne se produit pendant un moment, vous pouvez utiliser '-H'. Lorsque vous choisissez ce paramètre, MultiTail déplace le curseur sur l'écran, ce qui génère du trafic et maintient votre ligne active.
-VIl affichera alors sa version et terminera son exécution. Vous pouvez aussi appuyer sur la touche 'i' pendant qu'il s'exécute.


9. Est-ce tout ?

Tout n'a pas été traité dans ce manuel. Pour une liste complète des options et des touches à votre disposition lors de l'exécution de MultiTail, jetez un coup d'œil à sa page de manuel, à la sortie du paramètre en ligne de commande '-h' et à l'aide accessible lorsque vous appuyez sur la touche 'h' pendant que le programme s'exécute. Et n'oublions pas le code source !

La toute dernière version de MultiTail se trouve toujours ici : http://www.vanheusden.com/multitail/

Copyright © 2003, Folkert van Heusen

Copying license http://www.linuxgazette.com/copying.html

Paru dans le n°95 de la Linux Gazette d'octobre 2003.

Traduction française par Guillaume Lelarge .

Relecture de la traduction française par Joëlle Cornavin .