我有一个向stdout写入大量数据的过程,我正在将其重定向到日志文件。我想通过不时地将当前文件复制到一个新名称并将其截断来限制文件的大小。
我通常的截断文件技巧,例如
cp /dev/null file
不起作用,大概是因为进程正在使用它。
有什么办法可以截断文件?还是将其删除,并以某种方式将流程的stdout与新文件相关联?
FWIW,这是第三方产品,我无法对其进行更改以更改其日志记录模型。
*通过文件进行 *EDIT 重定向似乎与上述副本具有相同的问题-下次将文件写入以下文件时,文件将恢复为先前的大小:
ls -l sample.log ; echo > sample.log ; ls -l sample.log ; sleep 10 ; ls -l sample.log -rw-rw-r-- 1 user group 1291999 Jun 11 2009 sample.log -rw-rw-r-- 1 user group 1 Jun 11 2009 sample.log -rw-rw-r-- 1 user group 1292311 Jun 11 2009 sample.log
看一下该实用程序split(1),它是GNU Coreutils的一部分。
split(1)