无法通过`tail -f`查看文件的进度


11

令人惊讶的是,为什么现在tail -f不如以前那样工作。

我有以下命令运行以进行备份。

ubuntu@ubuntu:~$ sudo tar -cvf /media/ubuntu/My*Linux/ub*data/zebra.tar /media/ubuntu/home > z1 2> z2 && echo "pass" || echo "fail"

要查看输出和错误,有这两个文件z1z2

现在,我想在终端上从文件z1看到命令的输出:

ubuntu@ubuntu:~$ tail -f z1

但是此命令未显示随时间追加的数据。

我正在使用USB笔驱动器实时安装Ubuntu 14.04.1。这可能是原因吗?


1
可能与您的问题无关,但是您说2 > z2。我认为stderr重定向语法2>实际上在2和之间没有空格>
Ulrich Schwarz 2014年

@UlrichSchwarz对不起,这是我的错误。我已更正
拉维2014年

1
由于您为tar提供了一个f outputfilename选项,因此z1将是一个空文件。
2014年

@MarkPlotnick no z1的输出对应于-v选项。如果我运行“ cat z1”,它将显示所有备份的文件。问题是tail命令不起作用。
拉维2014年

@Ravi抱歉,您是对的,当v和f一起使用时,GNU tar会将列表写入stdout。这违反了tar的书面标准。将尝试重现您的问题。z1和z2在哪个目录中?实时CD的RAM盘还是USB驱动器?如果是USB,文件系统类型是什么(ext3,vfat)?
马克·普洛特尼克

Answers:


10

我可以重现这一点。这是一个错误。

在Ubuntu live CD上,包含默认用户主目录的文件系统类型为overlayfs,它声称支持inotify但不支持。

因此tail -f,在overlayfs上的文件上尝试使用inotify,然后在文件更改时没有任何通知。

Ubuntu的错误报告是Bug#882147:overlayfs不能正确实现inotify接口。该错误报告中引用的一种变通办法是使用吉姆·迈耶林(Jim Meyering)和安德里亚·拉涅里(Andrea Ranieri)

tail -f ---disable-inotify file

(那里确实有三个连字符。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.