有时,我在日志文件上运行less +F,然后截断日志文件。我希望less意识到该文件已被截断,并开始按照现在的情况跟踪该文件。目前,我被迫做以下工作:
less +F my-file.txtprintf "" > my-file.txtless +F my-file.txt每次截断文件时,我都必须执行第3-4步(这是一天几十次)。这真的很痛苦。
我想做的是:
less +F my-file.txt (以及所需的任何额外选项)printf "" > my-file.txt就是这样。less将自动意识到文件已被截断,并从一开始就开始跟踪新文件。
这个是可能的吗?为了实现这一点,我应该使用什么标志来减少?
发布于 2013-05-02 11:09:15
不完全是你想要的答案,但是你可以尝试使用'tail -F‘(而不是’-f')来给出你想要的行为。
发布于 2013-05-02 15:31:43
你为什么不把它们像这样结合起来呢?
tail -F filename | tee | less
这对我很管用。
发布于 2013-05-02 15:43:16
您希望将--follow-name参数指定为less。来自手册页:
通常,如果输入文件在执行F命令时被重命名,那么less将继续显示原始文件的内容,尽管它的名称有所更改。如果指定了--跟随名称,则在F命令期间,less将定期尝试按名称重新打开文件。如果重新打开成功,并且该文件与原始文件不同(这意味着一个新文件已经创建,其名称与原始文件(现在重命名)相同),那么更少的文件将显示该新文件的内容。
所以你现在的步骤是:
less --follow-name +F my-file.txtprintf "" > my-file.txt不使用printf,许多shell将只使用重定向运算符:> my-file.txt。
https://serverfault.com/questions/504384
复制相似问题