从打开的文件中删除起始的 10 MB

从打开的文件中删除起始的 10 MB

我有一个大小接近 100 MB 的日志文件,该文件由某个程序打开,并且该文件中不断进行日志记录。我想删除该文件的前 10MB。有什么办法可以做到这一点而不影响该文件的日志记录过程。

答案1

要跳过前 10MB,您可以dd这样使用:

dd if=ORIGINAL_FILE of=10MB_LESS_FILE bs=512 skip=14880

这会将原始文件复制到10MB_LESS_FILE.

答案2

没有办法从文件开头就地删除数据。 truncate 调用可以从末尾修剪数据,但没有相当于任意修剪空间的方法。

因此,您能做的最好的事情就是顶部复制文件,跳过您不需要的位。

答案3

您需要确保一个或多个进程打开的文件的索引节点不会更改,才能继续记录该文件。为此,请执行以下操作:

cp mylog mylog.new
< modify, trim or mangle `mylog.new` >
cp mylog.new mylog

相关内容