tail -f ne suit pas les modifications du fichier

14

Je regardais récemment en utilisant tail -fpour surveiller certains fichiers texte comme ceci: tail -f /var/sometext.

Cependant, quand j'ai fait quelques tests, cela ne semble pas fonctionner. Ce que j'ai fait, c'est que j'ai créé un nouveau fichier et tail -f /home/name/textj'ai couru: Ensuite, j'ai ouvert le journal dans vim et j'ai fait quelques modifications, l'ai enregistré, et il semble que tail ne "voit" pas le changement.

La chose étrange est que la course echo "hello" >> /home/name/textsemble bien fonctionner (la queue voit le changement). J'ai lu quelque part que cela avait quelque chose à voir avec les descripteurs de fichiers et les nouveaux inodes créés lors de l'enregistrement d'un fichier.

Quelqu'un peut-il m'expliquer cela? Je n'ai pas vraiment compris comment cela fonctionne, mais j'ai une idée de ce que sont les descripteurs de fichiers.

Alex.K.
la source

Réponses:

29

-fsuit par inode. Si vous souhaitez suivre par nom, par exemple lorsqu'un programme recrée complètement le fichier, utilisez-le à la -Fplace.

Ignacio Vazquez-Abrams
la source
Bien, je ne l'ai jamais su. Cela vaut la peine de lire les pages de manuel des utilitaires même (surtout?) Si vous les utilisez tout le temps!
Lyle
1

tail -f surveille la fin du fichier et lorsque la fin du fichier se déplace, il imprime le nouveau contenu et attend que la fin du fichier se déplace à nouveau. En d'autres termes, les changements au milieu du document ne seront pas trouvés par tail -f, seulement en ajoutant.


la source
-1

En fait, la véritable histoire est:

tail -f surveille la mémoire, pas le disque. Mais il ne peut pas accéder à la mémoire protégée, comme les modifications apportées à un fichier ouvert par un éditeur de texte.

fragileswan
la source
La tail -fcommande opère sur un fichier (descripteur de fichier après ouverture du fichier). Bien qu'en fait les nouvelles modifications du fichier soient encore en mémoire (tampons, cache) cela n'a pas d'importance. tailaccède toujours au fichier via le descripteur de fichier. Peu importe la façon dont le fichier est modifié. --- La réponse d'Ignacio Vazquez-Abrams est correcte - l'éditeur ne modifie pas le fichier actuel (qui est ouvert dans tail), il enregistre les modifications dans un nouveau fichier portant le même nom que l'ancien.
pabouk