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 bergamote23 . Évalué à 3.
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 spotty . Évalué à 1.
# Descripteur de fichier fermé (par exemple après logrotate)
Posté par Gabriel Linder . Évalué à 5.
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 hamelg . Évalué à 1.
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.