Je veux surveiller /var/log/syslog pour tout changement en temps réel (ou en quelques secondes), mais tail -f ne sera pas mis à jour avec de nouvelles modifications.
J'utilise actuellement Linux Mint 17 XFCE basé sur Ubuntu, mais cela n'a pas fonctionné non plus sur les iso live d'Ubuntu, Xubuntu ou Linux Mint Mate.
J'ai essayé ceux-ci :
$ tail -f /var/log/syslog $ tail -f --retry -s 1 /var/log/syslog $ tail --follow=name /var/log/syslog $ tail --follow=name --retry /var/log/syslog $ tail --follow=name --retry -s 1 /var/log/syslog
Mais il ne produit initialement que les dernières lignes du fichier, puis aucune mise à jour lorsque le fichier grossit (lorsque, par exemple, essayer de monter un fichier vide donne environ 15 lignes d'erreurs).
En fait, même essayer de suivre un fichier de test dans mon dossier personnel ne semble pas fonctionner, en exécutant tail -f testfile puis (dans un autre terminal) :$ echo "new stuff" >> testfile $ echo "new stuff2" >> testfile $ echo "3" >> testfile
n'entraîne aucune mise à jour de tail soit…
Mais si je mets testfile dans /tmp (monté sur un tmpfs) alors ça fait suivre les modifications du fichier.
Pourquoi la queue ne suit-elle pas ?
Y a-t-il quelque chose de bizarre à propos de l'exécution en direct, ou des superpositions qui paralysent tail -f ? Et des suggestions sur la façon de suivre le journal? (xwatch fonctionne bien, quelque chose de mieux ou dans le terminal ?)
J'ai essayé d'exécuter strace tail -f -s 1 testfile et voici les deux dernières lignes de sortie, après write(1, est le couple de lignes existant de testfile :
write(1, "new1\n", 5new1
) = 5
fstat64(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
fstatfs64(3, 84, {f_type=0x1021994, f_bsize=4096, f_blocks=968776, f_bfree=461437, f_bavail=461437, f_files=203469, f_ffree=190635, f_fsid={0, 0}, f_namelen=255, f_frsize=4096, f_flags=1056}) = 0
inotify_init() = 4
inotify_add_watch(4, "testfile", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 1
fstat64(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
read(4,
Réponse acceptée :
tail utilise inotify qui ne fonctionne pas avec overlayfs Voir ce rapport de bogue et cette discussion. @ Xen2050 a souligné le ---disable-inotify passer à tail Voir cette solution de contournement
Vous pouvez utiliser apt-src pour installer les coreutils source et recompilez tail avec -UHAVE_INOTIFY