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