linux - 在使用文件时截断文件 (Linux)

标签 linux unix file logging truncate

我有一个将大量数据写入标准输出的进程,我将其重定向到日志文件。我想通过偶尔将当前文件复制到一个新名称并截断它来限制文件的大小。

我常用的截断文件的技巧,比如

cp /dev/null file

不工作,大概是因为进程正在使用它。

有什么方法可以截断文件吗?或者删除它并以某种方式将进程的标准输出与新文件相关联?

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

最佳答案

从 coreutils 7.0 开始,有一个 truncate 命令。

关于linux - 在使用文件时截断文件 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/980283/

相关文章:

linux - 计划 cron 作业错误

python - 如何列出多个python脚本中的所有重复行

linux - freeswitch sip 中继收不到呼入电话

Linux 非阻塞套接字

java jsch su- root (我该怎么办?)

linux - 比较两个文件并将不匹配的数字写入新文件

java - 收到的每个数据包上都有新的 FileOutputStream 吗?或者保持 FileOutputStream 打开?

java - 创建一个无法删除的Java文件

C++检查文件是否存在,如果存在,改变输出

linux - 如何在 CSV 中获取一行的散列并将其添加为最后一列