【发布时间】:2012-11-14 13:22:21
【问题描述】:
我正在尝试编写一个 Unix 脚本,该脚本将截断/清空应用程序在达到 3GB 空间时不断写入/打开的文件。我知道下面的命令会做到这一点:
cp /dev/null [filename]
但我将在生产环境中自动运行它作为 cron 作业 - 只是在这里发布,看看你们在做类似的事情时是否遇到任何问题。
【问题讨论】:
-
这些是产品。日志没有价值?我很幸运将我的生产日志保存了一年以上(在 bzip2 -9 fmt 中),并且有一些小型实用程序可以轻松提取作业运行时间、处理的记录,并且在加载到电子表格时很容易计算和绘制加载率和一堆东西。由于负载率下降,我们发现了 hdwr 问题。是的,那里有可爱的监控工具,所以这完全取决于您的情况。作为一个单独的选项,您是否看过
logrotate,它可能会为您提供一些价值(但设置它很烦人(只是猜测)!)。 -
请注意,如果使用 O_APPEND 标志打开日志文件,则截断是有效的。如果没有用 O_APPEND 标志打开,那么程序会在偏移量 3 GiB 处继续写入(第一次);系统会将前 3 GiB 视为全零字节(压缩得很好),但文件将继续增长。这一切都取决于编写日志的程序。