如何清空Linux中连续流文件的内容

如何清空Linux中连续流文件的内容

我使用此命令运行程序

command 2> sample.txt

现在文件不断增长,命令将在 5-6 天内退出,我相信文件大小不会以 GB 为单位

我试过这个

echo "" > sample.txt但这并没有什么区别,文件大小还在增长。

我正在考虑在 1 小时后设置 cron 作业来清空其内容

我怎样才能清空文件的内容

答案1

由于文件由应用程序保持打开状态,我认为您不能按照传统方式清空它。谷歌搜索了一下,我发现了这一点:

假设编写永无止境的文件的代码的作者对 unix 有一点点了解:

  1. 对于这个过程有一个配置文件,它命名输出日志文件。
  2. 当进程接收到 SIGHUP 信号时,它会通过重新读取配置文件来“重新配置”自身,如果日志文件的名称发生变化,则关闭旧文件并打开新文件。

对于永不停歇的日志写入程序来说,这几乎是 UNIX 标准。

除此之外,我找不到任何明显的解决方案,因为您使用了>而不是>>。下次您可能希望重定向truncate或类似的东西来避免无限打开日志文件的问题。

答案2

所有你需要的是:

cat /dev/null > sample.txt

或者

>示例.txt

答案3

以下命令应该有效:

cat /dev/null > sample.txt  

答案4

使用logrotate,它就是为了完成这个任务

相关内容