将文本文件限制为 100MB

将文本文件限制为 100MB

我的服务器上有几个日志文件,我希望将其大小限制为 100MB。我正在考虑创建一个每月运行一次的 cron 作业,并从每个日志文件中删除最旧的字符(最接近顶部),使每个日志文件的大小为 100 兆或更小。我怎样才能做到这一点?

答案1

我正在考虑创建一个每月运行一次的 cron 作业,并从每个日志文件中删除最旧的字符(最接近顶部),从而减少每 100 兆的大小。

这种方法可能会出现一些问题,因此首先请确保日志记录过程正常,并在您以这种方式编辑文件时继续记录。如果它保持文件句柄打开,这可能是一个坏主意。

管理日志的正常方法是使用logrotate,但请注意,这也存在潜在的问题 - 某些应用程序对交换日志文件反应不佳。系统记录器实际上属于这一类,并且必须在轮换后收到信号才能重新打开新日志。

如果可以记录到标准输出或标准错误,则可以避免中断进程的类似选项是使用管道日志。 Pipelog 充当进程和日志文件的中介,以便您可以向其发送信号以轮换或删除日志,而不会中断或干扰任何内容:

> someprocess | pipelog someprocess.logfile &
[pipelog 5334] Using 'someprocess.logfile' as a log file.

然后,您可以通过发送管道日志 SIGUSR1: 来轮换日志kill -s USR1 5334,或者删除它并使用 SIGUSR2 启动一个新日志。

答案2

使用logrotate,它会轮换您的日志并根据您的需要压缩它们。它很可能已经在您的系统上运行,因此在 /etc/logrotate.d 中创建一个文件来告诉 logrotate 如何处理您的日志。检查 man 文件以了解规格...

答案3

man split会帮助你。尤其是-b国旗。

相关内容