Почему `tail -f` не отслеживает мой системный журнал при запуске вживую?

Я хочу контролировать /var/log/syslog за любые изменения в реальном времени (или в течение нескольких секунд времени), но tail -f не будет обновляться с любыми новыми изменениями.

Сейчас я работаю под управлением Linux Mint 17 XFCE на основе Ubuntu, но это не сработало на живых версиях Ubuntu, Xubuntu или Linux Mint Mate.

Я пробовал это:

$ 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

Но он только сначала выводит последние несколько строк файла, но не обновляет его по мере увеличения файла (например, при попытке смонтировать пустой файл выдается около 15 строк ошибок).

На самом деле, даже попытка выполнить тестовый файл в моей домашней папке не работает tail -f testfile а затем (в другом терминале):
$ echo "new stuff" >> testfile
$ echo "new stuff2" >> testfile
$ echo "3" >> testfile
не приводит к обновлениям tail или...
Но если я поставлю testfile в /tmp (монтируется на tmpfs), затем он следует за изменениями файла.

Почему хвост не последует?

Есть ли что-то странное в беге вживую, или наложения, которые наносят вред tail -f? И какие-либо предложения, как следить за журналом? (xwatch работает нормально, что-нибудь лучше или в терминале?)


Я пробовал бегать strace tail -f -s 1 testfile и вот последние пару строк вывода, после него write(1, Существующая пара строк 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, 

1 ответ

Решение

tail использования inotify который не работает с overlayfs Смотрите этот отчет об ошибке и это обсуждение. @Xen2050 указал на ---disable-inotify переключиться на tail Смотрите этот обходной путь

Вы могли бы использовать apt-src установить coreutils исходный код и перекомпилировать tail с -UHAVE_INOTIFY

Другие вопросы по тегам