Shell 如何使用less作为日志文件查看器?
我试图用Shell 如何使用less作为日志文件查看器?,shell,unix,logging,less-unix,Shell,Unix,Logging,Less Unix,我试图用更少的代码查看我的日志文件——遵循name+F MyLogFile.log 从手册页: 如果--follow name是 指定,在F命令执行期间,less将定期尝试 按名称重新打开文件 FScroll向前,并在文件结束时继续尝试读取 到达 因此,如果我理解正确,less应该继续尝试读取MyLogFile.log。但是,当我的程序重新启动并重写MyLogFile.log时,在我重新启动less之前,less不会看到新文件。但不应该“定期尝试按名称重新打开文件”?我一定是遗漏了什么。当我不断
更少的代码查看我的日志文件——遵循name+F MyLogFile.log
从手册页:
如果--follow name是
指定,在F命令执行期间,less将定期尝试
按名称重新打开文件
FScroll向前,并在文件结束时继续尝试读取
到达
因此,如果我理解正确,less应该继续尝试读取MyLogFile.log。但是,当我的程序重新启动并重写MyLogFile.log时,在我重新启动less之前,less不会看到新文件。但不应该“定期尝试按名称重新打开文件”?我一定是遗漏了什么。当我不断重新启动程序时,如何使用更少的日志查看器
以下是对--follow name
的完整解释,以供参考,这似乎与我所经历的完全矛盾:
通常,如果在执行F命令时重命名输入文件
执行时,less将继续显示
原始文件,尽管其名称已更改。如果--follow name是
指定,在F命令执行期间,less将定期尝试
按名称重新打开文件。如果重新打开成功,并且
文件与原始文件不同(这意味着
已创建一个与origi同名的新文件-
nal(现已重命名)文件),less将显示
那个新文件
我使用的是精简版458和OSX 10.12.4。在编写文件之前,需要删除该文件,以便精简版注意到。 我通过在两个终端窗口上运行一个小实验发现了这一点: 在第一个示例中,我运行了
less——遵循name file.txt
(file.txt已经存在),而在第二个示例中,我运行了echo text>file.txt
。莱丝没有注意到。我再试了一次,但这次我在echo
之前运行了rm file.txt
,它成功了
谢谢你的橡皮鸭。简单的答案是附加到日志中,而不是创建新的/不同的文件。顺便说一句,
--follow name
仅适用于新的和不同的inode。如果只是旧的inode但被截断了(这是yourprog>log
的情况),那么它就不是为工作而构建的。@Charles给出了我刚才发布的答案,这是否意味着只有在首次删除文件时才创建新的inode?删除,或者如果您创建了一个新文件并将其重命名为当前文件。顺便说一句,您可以使用ls-i
或statyourfile
查看inode编号。