![如何限制 Linux 服务创建的日志文件大小](https://linux22.com/image/121426/%E5%A6%82%E4%BD%95%E9%99%90%E5%88%B6%20Linux%20%E6%9C%8D%E5%8A%A1%E5%88%9B%E5%BB%BA%E7%9A%84%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F.png)
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
注意:我是上述存储库的维护者。只是分享解决方案...