Почему `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