tail -f mais aspire d'abord le contenu du fichier (alias `cat -f`)

9

J'ai besoin d'afficher tout le fichier avant de le suivre pour de nouvelles modifications, pas seulement les 10 dernières lignes (oui, je sais que ce n'est pas conceptuellement la queue ). En d'autres termes, quelque chose comme cat -fça ferait, s'il existait jamais. L'homme de Tail ne me donne aucune idée. La seule option que je vois en ce moment est de combiner en quelque sorte cat tout sauf les 10 dernières lignes et la sortie tail -f .

Des indices, s'il vous plaît?

Om Nom Nom
la source
3
cat $f && tail -n0 -f $fvient à l'esprit, et la vérification de la page de manuel à laquelle elle ressemble tail -c0 -f $fpourrait aussi faire ce que vous voulez (et être meilleure car elle ne crée pas de condition de concurrence entre les deux processus où les données écrites pourraient être ignorées). Je n'ai pas accès à un système Linux pour le moment mais est-ce que l'un ou l'autre fait ce que vous voulez?
un CVn du
C'est utile et je viens d'ajouter une telle fonctionnalité à un langage de programmation: un "flux de queue" qui peut lire un fichier normalement de beginnnig à la fin, puis passe en mode "tail -f" à la fin, et peut également remarquer que le fichier a été remplacé par un fichier plus court ou tronqué, et suivez cela. Vous en avez besoin pour pouvoir faire des choses comme traiter les journaux existants (rattraper un retard), puis commencer à traiter les nouvelles entrées.
Kaz

Réponses:

14

Voici une façon de procéder:

tail -f -n+0 /var/log/messages

Il ne semble pas y avoir de différence entre a +0et a +1, donc ce serait équivalent:

tail -f -n+1 /var/log/messages
slm
la source
2
Partie pertinente de la page de manuel (économisez de la frappe aux gens) ... -n, --lines = K affiche les K dernières lignes, au lieu des 10 dernières; ou utilisez -n + K pour produire des lignes commençant par le Kth
hérisson dément