La surveillance de plusieurs fichiers avec UNIX tail peut ne pas fonctionner comme prévu

La surveillance de plusieurs fichiers avec UNIX tail peut ne pas fonctionner comme prévu

Par 23 février 2017Ingénierie

par Allen Fung, ingénieur logiciel Senior

"tail-F" est couramment utilisé pour surveiller les fichiers pour les mises à jour.

Voici comment tail peut être utilisé pour surveiller plusieurs fichiers à la fois.

$ tail-F fichier1 fichier2

Le problème avec la commande ci-dessus est que le texte écrit à fichier1 et fichier2 pourrait ne pas être rincé sur le disque à de nouvelles limites de ligne. En conséquence, le texte d'un fichier peut être épissé dans le texte de l'autre fichier dans la sortie de la queue.

Voici un exemple du problème. Supposons que ce qui suit est écrit à fichier1.

Line_1
line_2
line_3

En outre, supposons que ce qui suit est écrit à fichier2.

LINE_A
LINE_B
LINE_C

Si le texte n'est pas rincé à de nouvelles limites de ligne, il sera possible d'obtenir la sortie suivante de la queue.

lineLINE_A
_1
LINE_B
line_2
LINE_C
line_3

Comme vous pouvez le voir, "LINE_A" est épissé dans "Line_1", résultant en "lineLINE_A" dans la première ligne. Voici quelques façons de résoudre le problème ci-dessus.

  1. Courir plusieurs queues en parallèle et le tuyau de la sortie de chaque queue à grep. Vous devrez utiliser l'option dans grep pour imprimer seulement à de nouvelles limites de ligne.

  2. Écrivez une nouvelle queue qui ne s'imprime que lorsqu'elle reçoit une ligne complète à partir d'un fichier.

  3. Modifiez l'application qui a généré les fichiers journaux pour créer un seul fichier journal. Vous devrez vous assurer que le texte est rincé au fichier unique à de nouvelles limites de ligne.

Voici le code à mettre en œuvre (1) ci-dessus.

$ VI multi-tail.sh
#!/bin/sh

# Lorsque cette sortie, quitter tous les processus de fond aussi.
trappe'Kill $ (emplois-p) 'EXIT

# Parcourir chacun des noms de fichiers donnés
pour le fichier dans "$ @"
Faire
  # Fichier tail en arrière-plan.
  tail-F $file | grep-ligne-tamponnée "" &
Fait

# Attendez.. jusqu'à ce que CTRL + C
Attendre

Je vais laisser au lecteur de mettre en œuvre (2) et (3).

Merci pour la lecture!

À propos de ShareThis

Depuis 2007,ShareThis libère la puissance du comportement numérique mondial en synthétisant les données relatives aux partages sociaux, aux intérêts et aux intentions. Grâce au comportement des consommateurs sur plus de trois millions de domaines mondiaux, ShareThis observe les actions en temps réel de personnes réelles sur des destinations numériques réelles.

S'abonner à notre newsletter

Recevez les dernières nouvelles, les conseils et les mises à jour

S'abonner

Contenu connexe