较少具有tail --follow = name(-F)之类的功能


41

该命令less可以被用来替换tail

tail -f file

提供诸如处理二进​​制输出和导航回滚之类的功能:

less +F file

+前缀的意思是“假装我在启动后键入”,然后密钥随即F开始。

但也less可以取代

tail --follow=name file

随后file即使实际文件被删除或转移了,像被移动到一个日志文件file.log.1,然后一个新的文件具有相同名称的文件,随后创建?


1
您可以尝试使用less --follow-nameless --follow-name +F
don_crissti

@don_crissti很好... less --follow-name +F是-不知道我是怎么想念的-我很确定自己在手册页中搜索了follow...很奇怪。做出答案!
Volker Siegel

好吧,更多的搜索显示它已经在这里被询问和回答了,所以我将其留为评论。您随时可以在此处提高答案的准确性。
don_crissti 2015年

@don_crissti是的...除了描述了您的正确答案,只是没有--follow-name描述您的正确答案,但+F从未提及,我认为这很重要,因为它的知名度并不明显。
Volker Siegel 2015年

如果您是因为Google搜索而来到这里的less follow,请阅读问题。它已经回答了如何进行less跟随文件更改!
Hubert Grzeskowiak

Answers:


40

是的,less可以按文件名

该功能的语法相当晦涩:

less --follow-name +F file.log

较少时,--follow-nametailoption 不同--follow=name
它不使less文件跟随,而是根据文件名而不是文件描述符修改命令键的行为,以F使其不遵循。

另外,没有正常选项可以less在跟随模式下启动。
但是您可以使用命令行为它们添加前缀,以使它们在启动后执行+。实际上,将
修饰符选项与组合在一起将以(修改的)跟随模式开始。 +Fless

+F单独使用相当于Plain tail -f

less +F file.log

我怀疑如果跟随更少的无限流,最终将耗尽您的内存,因为与tail -f不同,所使用的内存量不受终端回滚限制的限制(除非终端回滚限制也是无限的)。less + F可以保留整个回滚历史记录,并且不能依赖于从硬盘上的文件重新加载片。
CMCDragonkai '17

@CMCDragonkai有趣的一点。less具有用于控制每个文件(-b-B)使用的缓冲区大小的选项,默认情况下该大小是否受限制对我来说并不明显。
Volker Siegel's

的手册页-B指出:“默认情况下,从管道读取数据时,会根据需要自动分配缓冲区。如果从管道读取大量数据,则可能导致分配大量内存。 -B选项禁用为管道自动分配缓冲区,因此仅64 K(或-b选项指定的空间量)用于管道。”。因此,这意味着从无限管道读取时,默认情况下会分配无限内存,但是如果从日志文件之类的文件中读取,则默认使用64 K条带。
CMCDragonkai '17

4

在Fedora中,至少有一个+ F选项可以跟随文件的内容,就像tail -f一样。

更新,尝试在少打F的同时切换到跟随模式


你确定吗?我的less拥有一个名称相同的冲突选项,-F:less的手册页说:-F or --quit-if-one-screenless您有哪个版本?我 less 458的选择-V
Volker Siegel '18


非常有趣,感谢您的链接!这似乎不算少。的完整第一行less -Vless 458 (GNU regular expressions)。请给我你的版本。
Volker Siegel '18

是的,我确定,但是请继续投票给我,
stackexchange

1
只是为了确保您确实认为我不赞成你:不,我支持你。
Volker Siegel '18
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.