如何限制 Linux 服务创建的日志文件大小

如何限制 Linux 服务创建的日志文件大小

Linux 服务正在创建一个巨大的日志文件。

目前我正在使用 cron 来控制它(每 X 分钟我将其减少到最后 X 行):

*/5 * * * * root  echo "$(tail -n 1000 /var/log/XXX/logger_file.log)" > /var/log/XXX/logger_file.log

还有其他方法可以更干净地完成这项工作吗?

如果字符剪切是基于大小的(即保留最后 1024 字节),则剪切后的第一行甚至可能被损坏。

当然,我不能修改服务本身来保持安静。

答案1

您尝试过日志旋转吗?man logrotate

这是一个可以提供帮助的指南。如何使用 logrotate 管理日志文件

答案2

curtail 使用以下命令限制程序输出的大小并保留最后 X KB(本例中为 200 MB)的输出:

运行程序| curtail -s 200M myprogram.log

https://github.com/Comcast/Infinite-File-Curtailer

注意:我是上述存储库的维护者。只是分享解决方案...

相关内容