【问题标题】:Show newest log entries in file - Linux [duplicate]在文件中显示最新的日志条目 - Linux [重复]
【发布时间】:2013-12-08 08:16:22
【问题描述】:

Linux 中是否有命令仅显示日志文件中的最新条目?理想情况下,每次读取文件后都会清除日志文件。

【问题讨论】:

  • 你指的是哪个日志文件?
  • tailtail -f (用于自动打印新行)可能对您有用,尽管它们不会清除日志文件(您可以自己使用 echo -n "" > <name of logfile>fopen()使用w 作为mode 参数)。
  • @Abrixas2:如果你想清空(清除)一个文件,只需说> FILENAME,不需要回显和其他东西。
  • 在这种情况下 tail 不起作用。本质上,我正在编写一个脚本来读取日志文件,获取最新条目并根据内容采取行动。 Tail 有可能重新读取以前的条目,或跳过新条目(如果日志文件非常活跃)

标签: linux logging


【解决方案1】:

tail,假设要查看最后几个(tail -n N查看最后N个,默认为10)。然后tail -f 将连续显示最后的条目,直到您按 Ctrl-C 停止它。

这些工具都没有像删除它那样“清除”日志文件,但这是一件好事:应该附加日志文件,并且很少删除。

为了节省空间,可以使用logrotate“旋转”(重命名和压缩)日志。请参阅man logrotate 了解更多信息。

【讨论】:

  • 通常我会完全同意不应该清除日志文件,但是,这个特定的日志文件是一个 openvpn 日志文件,并且已决定清除日志文件以帮助保护用户的匿名性。但是我仍然需要监视它们并在需要时采取行动,因此如果我可以编写一个脚本来读取日志文件,然后在每次读取后清除它,那将是理想的。
  • 当然,您可以使用我提到的工具制作一个脚本来执行此操作。
【解决方案2】:

@John Zwinck:是的,以下内容在我的脚本中运行良好:

cat 'logfile'
> 'logfile'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多