为什么实时运行时“tail -f”不会跟踪我的系统日志?

为什么实时运行时“tail -f”不会跟踪我的系统日志?

我想/var/log/syslog实时(或在几秒钟内)监控任何变化,但tail -f不会更新任何新的变化。

我现在正在运行基于 Ubuntu 的 Linux Mint 17 XFCE live,但这在 Ubuntu、Xubuntu 或 Linux Mint Mate 的 live iso 上也无法运行。

我尝试过这些:

$ 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 上)那么它跟踪文件的变化。

尾巴为何不跟随?

运行 live 或 overlayfs 时有什么奇怪的地方吗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

tailinotify不适用于overlayfs参见此错误报告这次讨论。@Xen2050 指出---disable-inotify切换到tail查看这个解决方法

您可以使用apt-src安装coreutils源代码,然后重新tail编译-UHAVE_INOTIFY

相关内容