log

Suivre les logs systèmes en temps réel avec tail sous gnu/linux

Console - terminalUn atout dans les systèmes GNU/Linux, c’est principalement la « verbosité » du système.

Cela signifie, que lorsque vous avez un système GNU/Linux installé, soit sur votre machine, soit sur un serveur distant, vous pouvez consulter en temps réel les informations renvoyées par le système (dans une console / fenêtre terminal en local, ou connecté en SSH à un serveur distant).

Ce post s’adresse évidemment à un niveau plutôt débutant.

Les principales remontées d’informations sont les logs systèmes, le plus généralement inscrits dans le fichier /var/log/messages.

Pour suivre l’activité du fichier, vous allez pouvoir utiliser la commande « tail » comme ceci :
[bash]tail -f /var/log/messages[/bash]

Avec cette commande, les informations vont défiler automatiquement sur la sortie standard (votre console). Pour interrompre la consultation, pressez :
CTRL+C (les 2 touches en même temps).

Vous pouvez également conserver le processus actif, et reprendre la main sur la console, en plaçant le processus en arrière plan :
Lancement de la commande :
[bash]tail -f /var/log/messages[/bash]
Presser CTRL+Z (passage en arrière plan, en pause)
Taper : bg
La tache reste active en arrière plan (background).

Vous noterez qu’après avoir pressé CTRL+Z, la tache est numérotée [1] (ici 1, la première en arrière plan), et se retrouve à l’état « Stopped ». C’est en tapant « bg » et en validant, que la tache devient active.
Vous pouvez ainsi taper d’autres commandes, tout en ayant la visibilité sur les logs. Notez que les logs s’affichent quoi que vous fassiez, ce qui peut parasiter si vous être en train de taper autre chose.

L’intérêt de la chose, est, par exemple, de pouvoir monitorer en temps réel plusieurs fichiers de log, et pouvoir agir.

Par exemple, je veux surveiller en même temps mes logs systèmes, et mes logs apache (serveur web httpd) lorsque je le relance pour voir si tout va bien.

On part du principe qu’on est connecté en root (ou sudo bash) dans le terminal :
Analyse des logs système :
[bash]tail -f /var/log/messages[/bash]
Puis je presse CTRL+Z
Activation de la tâche en arrière plan :
taper : bg
Analyse simultanée des logs apache :
[bash]tail -f /var/log/httpd/error_log[/bash]
Passage en arrière plan : CTRL+Z
Activation de cette autre tâche en arrière plan :
bg
(vous noterez le petit [2] indiquant qu’il s’agit de la deuxième tâche tournant en arrière plan).
Puis je relance mes services pour voir ce que ça donne :
[bash]/etc/init.d/httpd restart[/bash]
(Vous aurez évidemment apache d’installé sur votre machine pour cet exemple !).

Vous verrez donc défiler les informations « habituelles » de redémarrage du service, et les logs générés par tout ceci.

Enfin, car vous allez en avoir besoin, il faut ramener les tâche en premier plan afin de pouvoir les interrompre !
Vous pouvez donc rappeler vos processus, soit simplement via la commande « fg » (foreground) comme ceci :
[bash]fg[/bash]
Soit en appelant la commande voulue par son numéro :
[bash]fg 1[/bash]
Puis il suffit de presser CTRL+C pour interrompre la tâche. Répétez la commande « fg » jusqu’à avoir le message :
[bash]bash: fg: current : tâche inexistante[/bash]
C’est bon il ne reste aucun processus en arrière plan !

Ceci est évidemment utilisable avec tous les logs renvoyés par le système, que vous trouvez généralement dans le dossier /var/log.

S’il vous arrive par erreur d’utiliser la commande « tail » sur un binaire (un programme), l’environnement de votre console peut être « chamboulé » et les caractères affichés devenir illisibles. Dans ce cas, appuyez sur CTRL+C et tapez la commande
[bash]reset[/bash]
(même si les caractères ne s’affichent pas correctement) et la situation devrait être rétablie.

J’espère que ce petit article pourra être utile à certains.

Source image : http://www.openclipart.org/detail/25561

Loading

Tags: , , , , , , , , , ,

mardi, novembre 2nd, 2010 Bash, GNU - Linux, Reseau, Technologie 5 Comments