Je voudrais surveiller un gros fichier journal (près de 1 Go) pour les erreurs. Je veux que ce soit proche du temps réel (un délai de quelques secondes est très bien). Mon plan est d'utiliser tail -f | grep
. Existe-t-il des problèmes de performances avec l'utilisation d'une telle méthode lors de son exécution sur une longue période, par exemple de zéro octet à 1 Go? Existe-t-il des pratiques normatives utilisées pour une telle surveillance? Notez que je voudrais le faire en utilisant les commandes standard Unix disponibles sur Solaris 10.
Si c'est possible, mon fichier est même retourné et j'ai encore un problème à régler :). l'utilisation de tail -F
( --follow=name
) n'est pas une option pour moi car elle -F
n'est pas prise en charge par le serveur sur lequel je veux exécuter cela. Mon plan est d'utiliser un script qui démarrera cette queue et interrogera pour savoir si le fichier est retourné. Si oui, tuez la queue et redémarrez-la. Une meilleure approche?
la source
tail
", non?Réponses:
Sur mon système Linux (GNU coreutils 8.12), j'ai pu vérifier (en utilisant
strace
) quetail -f
¹ utilise l'lseek
appel système pour ignorer la plupart du fichier rapidement:Cela signifie que la taille du fichier suivi ne devrait en aucun cas avoir d'importance.
Vous pouvez peut-être vérifier si la même chose s'applique à votre système. (Évidemment, cela devrait être le cas.)
-
1. J'ai également essayé de désactiver le support inotify avec les sans-papiers
---disable-inotify
, juste au cas où.la source
strace
;)tail -F
n'est pas supporté, il y a des chances qu'ilstrace
ne soit pas disponible…truss
est l'utilitaire correspondant sur Solaris.Si elle est invoquée sur un fichier normal (par opposition à un tube), GNU tail et OpenBSD tail (sauf si appelé avec
-n +N
) cherchent à la fin du fichier, puis travaillent en arrière pour trouver la ligne où il devrait commencer l'impression. Je ne sais pas si Solaris fait de même, mais c'est une approche raisonnable, donc je m'attends à ce que la plupart des unités fassent de même. Par conséquent, la taille du fichier n'est pas pertinente pour les performances.la source
Je fais ça tous les jours. J'analyse généralement une douzaine de journaux sur nos serveurs de test et de production à l'aide de
tail -f logs/*.{log,err,out}
. La charge initiale est un peu élevée (en fonction du nombre de fichiers globalisés), mais après cela, la diffusion en temps réel.Au lieu d'envoyer à grep, j'utilise la
exec
fonctionnalitéscreen
depuis car je veux généralement voir toutes les sorties (pour les retraits complets et les messages liés au problème). Par exemple,Pour que le terminal émette un bip (ou clignote) chaque fois que le mot Exception est trouvé.
la source