Afficher d'énormes fichiers journaux pour le dépannage est une tâche de routine banale pour les administrateurs système et les programmeurs.
Dans cet article, voyons comment afficher et manipuler efficacement d'énormes fichiers journaux à l'aide de 10 exemples impressionnants.
Exemple 1 :Afficher des lignes spécifiques (basées sur le numéro de ligne) d'un fichier à l'aide de la commande sed
Afficher uniquement les lignes spécifiques mentionnées par des numéros de ligne.
Syntax: $ sed -n -e Xp -e Yp FILENAME
- sed :commande sed, qui imprimera toutes les lignes par défaut.
- -n :supprime la sortie.
- -e CMD :Commande à exécuter
- Xp :imprimer le numéro de ligne X
- Yp :imprimer le numéro de ligne Y
- FILENAME :nom du fichier à traiter.
L'exemple mentionné ci-dessous imprimera les lignes 120, 145, 1050 du syslog.
$ sed -n -e 120p -e 145p -e 1050p /var/log/syslog
Dans l'exemple suivant, vous pouvez afficher le contenu de var/log/cron des lignes 101 à 110.
- M - Numéro de ligne de départ
- N - Numéro de ligne de fin
Syntax: sed -n M,Np FILENAME $ sed -n 101,110p /var/log/cron
Exemple 2 :Afficher les N premières lignes d'un fichier à l'aide de la commande head
Cet exemple affiche uniquement les 15 premières lignes du fichier /var/log/maillog. Remplacez 15 par 10 pour afficher les 10 premières lignes d'un fichier journal.
Syntax: head -n N FILENAME $ head -n 15 /var/log/maillog
Exemple 3 :Ignorer les N dernières lignes d'un fichier à l'aide de la commande head
Cet exemple montre comment ignorer les N dernières lignes et afficher uniquement les lignes restantes à partir du haut du fichier.
L'exemple suivant affichera toutes les lignes de /var/log/secure sauf les 250 dernières lignes.
Syntax: head -n -N FILENAME $ head -n -250 /var/log/secure
Exemple 4 :Afficher les N dernières lignes du fichier à l'aide de la commande tail
Cet exemple affiche uniquement les 50 dernières lignes du fichier /var/log/messages. Remplacez 50 par 100 pour afficher les 100 dernières lignes du fichier journal.
Syntax: tail -n N FILENAME $ tail -n 50 /var/log/messages
Exemple 5 :Ignorer les N-1 premières lignes du fichier à l'aide de la commande tail
Cet exemple montre comment ignorer les N-1 premières lignes et afficher uniquement le reste des lignes.
L'exemple suivant ignore les quatre premières lignes du fichier /etc/xinetd.conf, qui ne contient que les commentaires.
Syntax: tail -n +N FILENAME $ tail -n +5 /etc/xinetd.conf defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d
Exemple 6 :Afficher le fichier journal croissant en temps réel à l'aide de la commande tail
C'est probablement l'une des commandes les plus utilisées par les administrateurs système. Pour afficher un fichier journal en pleine croissance et ne voir que le contenu le plus récent, utilisez tail -f comme indiqué ci-dessous.
L'exemple suivant montre le contenu de la commande /var/log/syslog en temps réel.
Syntax: tail -f FILENAME $ tail -f /var/log/syslog
Exemple 7 :Afficher des lignes spécifiques (basées sur le numéro de ligne) d'un fichier à l'aide de la commande head and tail
L'exemple ci-dessous affichera les numéros de ligne 101 à 110 du fichier /var/log/anaconda.log
- M - Numéro de ligne de départ
- N - Numéro de ligne de fin
Syntax: cat file | tail -n +N | head -n (M-N+1) $ cat /var/log/anaconda.log | tail -n +101 | head -n 10
- cat :imprime tout le fichier sur la sortie standard.
- tail -n +101 :ignore les lignes jusqu'au numéro de ligne donné, puis commence à imprimer les lignes après le numéro donné.
- head -n 10 :imprime les 10 premières lignes, c'est-à-dire 101 à 110 et ignore les lignes restantes.
Exemple 8 :Affichez les lignes correspondant à un modèle, et quelques lignes après la correspondance.
L'exemple suivant affiche la ligne qui correspond à "Initializing CPU" de /var/log/dmesg et 5 lignes immédiatement après cette correspondance.
# grep "Initializing CPU#1" /var/log/dmesg Initializing CPU#1 [Note: The above shows only the line matching the pattern] # grep -A 5 "Initializing CPU#1" dmesg Initializing CPU#1 Calibrating delay using timer specific routine.. 3989.96 BogoMIPS (lpj=1994982) CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 monitor/mwait feature present. CPU: L1 I cache: 32K, L1 D cache: 32K [Note: The above shows the line and 5 lines after the pattern matching]
Reportez-vous à notre article précédent Get a Grip on the Grep! – 15 exemples pratiques de commande Grep qui expliquent comment utiliser la commande grep.
Comme expliqué dans notre précédent article sur la commande grep, les opérations suivantes sont possibles.
- Affichage de lignes spécifiques identifiées par des modèles, qui est la fonctionnalité par défaut de grep.
- Affichage uniquement des caractères correspondants.
- Affichage de N lignes après le match avec l'option -A.
- Affichage de N lignes avant le match avec l'option -B.
- Affichage de N lignes autour du match avec l'option -C.
Exemple 9 :Affichage d'octets spécifiques d'un fichier.
L'exemple suivant explique comment afficher les 40 premiers ou les 30 derniers octets d'un fichier.
Afficher les 40 premiers octets de syslog.
$ head -c40 /var/log/syslog
Afficher les 30 derniers octets de syslog.
$ tail -c30 /var/log/syslog
Exemple 10 :Affichage des fichiers journaux compressés
Après un certain temps, tous les fichiers journaux du système sont pivotés et compressés. Vous pouvez le décompresser à la volée et diriger la sortie vers une autre commande unix pour afficher le fichier comme expliqué ci-dessous.
Reportez-vous à notre article précédent La puissance des commandes Z - Exemples Zcat, Zless, Zgrep, Zdiff
- Afficher les N premières lignes d'un fichier compressé.
$ zcat file.gz | head -250
- Afficher les N dernières lignes d'un fichier compressé.
$ zcat file.gz | tail -250
- Ignorer les N dernières lignes d'un fichier compressé.
$ zcat file.gz | head -n -250
- Ignorer les N premières lignes d'un fichier compressé.
$ zcat file.gz | tail -n +250
- Affichage des lignes correspondant au motif
$ zcat file.gz | grep -A2 'error'
- Affichage d'une plage particulière de lignes identifiées par numéro de ligne.
$ zcat file.gz | sed -n -e 45p -e 52p
Si vous devez revenir, mettez cette page en signet sur del.icio.us pour une référence pratique.