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
注意:我是上述存储库的维护者。只是分享解决方案...