在vi中打开大存储日志文件

在vi中打开大存储日志文件

我在 AIX 分区中有一个存储日志。当我尝试使用 vi 命令编辑文件时,我收到以下消息:ex: 0602-101 Out of memory saving lines for undo delete lines

我不想扩展文件限制来读取文件。相反,我想删除一些行以减小文件大小。

如何指定删除文件中除最后 10000 行之外的所有内容?

我认为这是正确的方法,但效果不佳:1,$-10000d

答案1

代替删除使用 Vi 过滤除最后 10000 行之外的所有内容,将它们过滤到一个新文件中(您通常不希望编辑无论如何,日志文件)。

$ tail -n 10000 logfile >logfile.tail

如果您愿意,您可以替换logfile为:logfile.tail

$ mv logfile.tail logfile

由于某些写入日志文件的程序可能会保持日志文件打开以进行写入,直到程序退出,因此即使旧日志文件已被较短版本替换,一些新消息也可能会写入旧日志文件中。这些日志消息将丢失。

要解决此问题:

$ cat logfile.tail >logfile

这会截短 logfile(清空它而不删除它)然后用 的内容替换它的内容logfile.tail。这也意味着来自已logfile打开写入的程序的消息不会丢失。

还可以考虑放置某种自动日志文件轮换以避免日志文件过大。

相关内容