Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何使用less作为日志文件查看器?_Shell_Unix_Logging_Less Unix - Fatal编程技术网

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编号。