首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不中断程序的情况下清除管道输出?

在不中断程序的情况下清除管道输出?
EN

Stack Overflow用户
提问于 2013-07-27 00:31:31
回答 1查看 72关注 0票数 1

我正在运行一个通过管道传输到文本文件的程序(pianobar),该程序每秒输出一次。生成的文件("pianobarout.txt")需要定期清除,否则会增长到很大的比例。但是,我不想停止pianobar来清除文件。

我尝试过运行> pianobarout.txtecho "" > pianobarout.txt,但这两种方法都会导致系统资源在近30秒内达到峰值,导致钢琴伴奏的音频跳过。我尝试删除该文件,但似乎该文件在被删除后没有重新创建,并且我只是丢失了管道。

我使用的是python,所以如果有任何库可以帮助我,我可以使用它们。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-07-27 01:15:57

如果您当前使用截断进行重定向,如yourprogram > file.txt,请尝试使用附加的:yourprogram >> file.txt进行重定向。

当输出文件被截断时,两者之间有很大的区别。

通过追加重定向,数据将写入文件的当前末尾。如果您将其截断为0字节,则下一次写入将发生在位置0处。

使用截断重定向,数据将写入文件中最后一次写入的任何位置。如果您将其截断为1073741824字节,则写入将在最后停止的字节1073741824处继续。

如果文件系统支持稀疏文件(ext2-4和大多数Unix fs支持),这将导致文件稀疏;如果文件系统不支持,则会导致在写出文件时等待很长时间(如fat32)。文件后面的任何内容也可能导致长时间等待,例如tail -f,它必须通过读取GB的零来追赶。

替代方案包括yourprogram | split -b 1G - output-,它将每个文件写入1 1GB到output-aaoutput-ab等,允许你随意删除旧文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17886519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档