尽管内容空了,但Open File仍在不断增长

时间:2015-01-24 09:57:31

标签: sed filesize

如何将文本流传输到文件中,当文件仍然正在使用时,请将其擦除以便轮换作业?


长版:

我一直在努力解决一个显然很小的问题,这让我的实验无法继续下去。

我有一个软件从外部硬件(radiotelescope项目)连续收集数据并以csv格式存储。作为远程位置的安装,我会每天一次将保存的数据复制到一个安全的地方并擦除文件内容,同时,出于同样的原因,我不能停止硬件/软件,因此软件如日志旋转不会是一种选择。

花费尽可能多的精力see my previous post,似乎被擦除的文件仍在增长,尽管是空的。

奇怪的行为,显示文件大小,截断文件,再次显示文件大小:

pi@tower /media/data $ ls -la radio.csv ;ls -s radio.csv;truncate radio.csv -s 1; ls -la radio.csv ;ls -s radio.csv
-rw-r--r-- 1 pi pi 994277 Jan 18 21:32 radio.csv
252 radio.csv
-rw-r--r-- 1 pi pi 1 Jan 18 21:32 radio.csv
0 radio.csv

然后,只要有更多数据进入:

pi@tower /media/data $ ls -la radio.csv ;ls -s radio.csv
-rw-r--r-- 1 pi pi 1011130 Jan 18 21:32 radio.csv
24 radio.csv

我想把输出管道输入到sed命令并立即保存,完全没有运气。此外,文件系统/硬件似乎没有错误(尝试了不同的硬件/发行版/文件系统)。

有人会很高兴给我一个提示如何继续吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用tee选项加密到-a。该文件由原始来源保持打开状态。

tee的选项APPEND有助于坚持EOF新数据;在给定的问题中,当文件归零时附加到开头。

对于搜索引擎和将来的参考:

sudo rtl_power -f 88M:108M:10k -g 1 - | tee -a radio.csv -

现在用

清空文件
echo -n > radio.csv

按预期将文件归零。