Forum Programmation.shell Tail -f ??

Posté par  .
Étiquettes : aucune
0
6
nov.
2006
Salut,

Je cherche a faire un petit script qui surveillera en continu un des mes fichiers de log (en l'occurence celui de postfix).
Tout marche bien, sauf quand j'ajoute l'option -f a tail.
Voila ma ligne de commande :

tail -n 500 /var/log/maillog | grep -i "domain not found" | cut -d ":" -f 6 | sed 's/.*\[//g' | sed 's/\].*//g'

(Je recupere les ip qui generent une erreur "domain not found"). Ca marche nickel. Mais comme je veux monitorer en continu, j'enleve le "-n 500" et je le remplace par un "-f" :

tail -f /var/log/maillog | grep -i "domain not found" | cut -d ":" -f 6 | sed 's/.*\[//g' | sed 's/\].*//g'

Et la.. plus rien. Je n'ai plus aucune sortie (alors que dans le meme temps, j'ai bien des entrees correspondantes dans le maillog). Comment ca se fait ? Est ce possible de faire qqchose comme ca ? J'ai loupe qqchose ?

Merci
  • # buffer ?

    Posté par  . Évalué à 3.

    Peut etre qu'il faut que tu attende un peu que tu ais assez de lignes correspondantes.

    De mémoire, j'avais eu un soucis du genre, c'etait du a grep qui ne n'affichait les lignes qui matchent que quand il en avait un certain nombre.

    Genre, peut etre que quand tu fait tail -n 500 | grep "truc" tu as plus de 10 lignes qui matchent, donc grep te le sort tout de suite,

    Essaye juste pour tester de faire ton grep sur un motif beaucoup plus fréquent:
    grep -i "from="
    juste pour voir si cette fois, tu vois quelque chose.

    essaye peut etre aussi de rajouter "--line-buffered" a grep.

    C'est vraiment une hypothèse hein, rien de bien sûr...
  • # Watch

    Posté par  . Évalué à 1.

    essaie avec un watch pour relancer la commande régulièrement et enlève ce qui est redondant avec le résultat précédent
  • # Descripteur de fichier fermé (par exemple après logrotate)

    Posté par  . Évalué à 5.

    J'avais un problème similaire aussi : après un certain temps tail n'envoyait plus rien à grep.

    Essaie avec tail -F à la place de -f : cette option permet de "suivre" selon le nom du fichier, alors que -f ne suit que le descripteur (qui devient invalide ou pointe toujours sur l'ancien lorsque le fichier est renommé par logrotate, je ne sais plus trop exactement).
  • # MultiTail

    Posté par  . Évalué à 1.

    Pour les amateurs de perl je recommande :
    http://search.cpan.org/~sgmiano/MultiTail-0.5/MultiTail.pm

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.