【问题标题】:How to use less as a log file viewer?如何使用 less 作为日志文件查看器?
【发布时间】:2017-10-08 09:51:29
【问题描述】:

我正在尝试使用 less --follow-name +F MyLogFile.log 查看我的日志文件。

来自手册页:

如果 --follow-name 是 指定,在 F 命令期间,less 将定期尝试 按名称重新打开文件。

F          向前滚动,并在文件结束时继续尝试阅读 到达。

所以如果我理解正确的话,less 应该继续尝试阅读 MyLogFile.log。但是,当我的程序重新启动并重写 MyLogFile.log 时,在我重新启动 less 之前,less 不会看到新文件。但是不应该“定期尝试按名称重新打开文件”吗?我一定在这里遗漏了一些东西。当我不断重启程序时,如何使用 less 作为日志查看器?

作为参考,这里是--follow-name的完整解释,这似乎与我的经历完全矛盾:

通常,如果输入文件被重命名,而 F 命令是 执行时,less会继续显示的内容 原始文件,尽管名称已更改。如果 --follow-name 是 指定,在 F 命令期间,less 将定期尝试 按名称重新打开文件。如果重新打开成功并且 文件与原始文件不同(这意味着 已创建一个与原始文件同名的新文件 nal(现在重命名)文件),less 将显示的内容 那个新文件。

我正在使用较少的版本 458 和 OSX 10.12.4。

【问题讨论】:

  • 简单的答案是附加到您的日志中,而不是创建一个新的/不同的文件。
  • 顺便说一句,--follow-name 仅适用于新的和不同的 inode。如果它只是旧的 inode 但被截断(yourprog >log 就是这种情况),那么它不是内置的。
  • @Charles 给出了我刚刚发布的答案,这是否意味着只有在首先删除文件时才会创建新的 inode?​​span>
  • 已删除,或者如果您创建一个新文件并将其重命名为当前文件。
  • 顺便说一句,您可以使用ls -istat yourfile 来查看inode 编号。

标签: shell unix logging less-unix


【解决方案1】:

文件在写入之前需要删除,以免引起注意。

我通过对两个终端窗口进行小实验发现了这一点:

在第一次我运行less --follow-name file.txt(file.txt 已经存在),而在第二次我运行echo text > file.txt。少没注意到。我又试了一次,但这次我在echo 之前运行了rm file.txt,它成功了。

谢谢橡皮鸭。

【讨论】:

    猜你喜欢
    • 2011-02-21
    • 1970-01-01
    • 2011-08-29
    • 2018-10-29
    • 2023-03-27
    • 2018-11-23
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多