GNU/Linux >> Tutoriels Linux >  >> Ubuntu

`tail -f` ne suivra-t-il pas le Syslog lors de l'exécution en direct ?

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


Ubuntu
  1. Comment utiliser la commande tail dans Ubuntu Linux

  2. Ubuntu - Exécution d'une commande lorsqu'un CD/dvd/bd est inséré ?

  3. Puis-je mettre à jour le système avec un Live Cd ?

  4. Confirmation automatique lors de l'exécution de scripts bash ?

  5. Google Chrome quitte les processus en direct après la fermeture ?

Comment afficher les données avec la commande Tail sous Linux

Les programmes en cours d'exécution ne s'affichent pas dans le panneau ?

Pourquoi puis-je voir la sortie des processus en arrière-plan ?

Comment exécuter un fichier .sh au démarrage de la session ?

Pourquoi `tail -f n'est-il pas … | grep -q …` quittant lorsqu'il trouve une correspondance ?

Utiliser tail pour suivre un fichier sans afficher les lignes les plus récentes