有时我会在日志文件上运行less +F
,然后将其截断。我想less
意识到文件已被截断,并开始跟踪文件现在的状态。目前,我被迫执行以下操作:
- (1 号航站楼) >
less +F my-file.txt
- (2 号航站楼) >
printf "" > my-file.txt
- (1 号航站楼)> 少退出
- (终端 1)> 重新启动 less:
less +F my-file.txt
我必须执行步骤 3-4每次我截断了文件(这是许多o次)。这真的很痛苦。
我想要做:
- (终端 1) >
less +F my-file.txt
(以及所需的任何额外选项) - (2 号航站楼) >
printf "" > my-file.txt
就是这样。less
会自动意识到文件已被截断,并从头开始跟踪新文件。
这可能吗?我应该使用哪个标志来实现这一点?
答案1
这不是您想要的答案,但您可以尝试使用'尾部-F'(相对于'尾部-f') 这将为您提供您正在寻找的行为。
答案2
你为什么不像这样把它们结合起来呢?
tail -F filename | tee | less
这对我来说很有效。
答案3
您想要指定--follow-name
参数less
。从手册页:
通常,如果在执行 F 命令时重命名了输入文件,则 less 将继续显示原始文件的内容,尽管其名称已更改。如果指定了 --follow-name,则在执行 F 命令期间,less 将定期尝试按名称重新打开文件。如果重新打开成功并且文件与原始文件不同(这意味着已创建了一个与原始(现已重命名)文件同名的新文件),less 将显示该新文件的内容。
因此,您的步骤现在是:
- (1 号航站楼) >
less --follow-name +F my-file.txt
- (2 号航站楼) >
printf "" > my-file.txt
- (1 号航站楼)> 尽情享受吧!
PS:许多 shell 不使用 printf,而是直接使用重定向运算符来截断:> my-file.txt