如何在Linux中处理庞大(且不断增长)的日志文件

如果您已经长时间运行Linux服务器,那么您将熟悉日志文件的问题。 有时它们甚至很难找到它们,然后您有时会遇到一个大小为数百MB(甚至GB)的文件。 搜索它很痛苦,它们甚至可能会耗尽您的存储空间。

本文将向您展示如何处理此问题。 我们将使用已经存在的内置Linux syslog软件包。 这意味着您不需要安装新软件包! 您只需要为自己的日志文件添加配置即可。

Linux日志如何与logrotate一起旋转

在以下位置有几个系统日志文件:

/var/log/

在下面的屏幕截图中,我们将列出此目录中的所有文件,并以MB为单位显示文件大小:

如您所见,有许多已过时的大型日志文件。 它们默认情况下是“ logrotate”生成的。 查看时间戳记,我们可以看到它们每7天产生一次。 因此,对于此处的每个日志文件,logrotate都会执行以下操作:

  1. 重命名带有时间戳的日志文件
  2. 使用与以前相同的名称创建一个新的空日志文件

检查默认的Logrotate配置

Logrotate检查以下文件的配置:

/etc/logrotate.conf

在此我们可以看到他收到了有关以下方面的所有重要信息:

  1. 他应该多久旋转一次杂志
  2. 保留多少备份
  3. 他应该在旧杂志上加上什么后缀
  4. 他们是否需要挤压他们
  5. 等等…

这是logrotate配置文件的屏幕截图:

如何在Linux中处理庞大(且不断增长)的日志文件

默认情况下,不压缩旧的日志文件。 您可以通过简单地取消注释“ compress”指令(如上所示)来更改此设置。

添加文件进行logrotate

logrotate如何知道要使用哪些日志? 该目录中的文件:

/etc/logrotate.d

例如,在第一个屏幕截图中看到的“安全”日志中,我们可以使用简单的grep命令找出logrotate.d文件中的哪个文件,如高级grep指南中所述:

grep -r secure /etc/logrotate.d

下面的屏幕截图显示了哪个文件负责“安全”日志:

如何在Linux中处理庞大(且不断增长)的日志文件

打开“ syslog”,我们看到它告诉logrotate在多个文件上工作:

如何在Linux中处理庞大(且不断增长)的日志文件

它们都位于/ var / log /路径中。 因此,每个文件包含:

  1. 它应该轮换的日志文件的名称
  2. 特定于此特定文件的指令
  3. 在没有指令的情况下,将使用logrotate.conf的默认值

为日志创建自己的Logrotate文件

我们可以按照上述模式创建一个带有logrotate的条目,该条目告诉我们它以相同的方式处理我们自己的文件。

获取目录的所有者和组

为了确保设置了所有权限,我们需要使用适当的权限运行logrotate。 转到包含要处理的日志文件的目录,并使用以下命令获取所有者和组:

ls -l -d

例如,/ var / log目录的所有者为“ root”,组为“ root”:

如何在Linux中处理庞大(且不断增长)的日志文件

创建一个Logrotate配置文件

然后在/etc/logrotate.d/中创建一个新文件,并将以下配置粘贴到其中:

/var/log/newlogfile {

size 10M

compress

delaycompress

su root root

}

将/ var / log / newlogfile替换为您自己的日志文件的位置。 另外,将su root root替换为您在上一步中获得的所有者和组名。 这是您可以使用的logrotate指令的列表。 delaycompress指令告诉logrotate仅压缩具有两个或更旧版本的文件。 这样,您可以快速轻松地访问上一个压缩日志文件。

您还可以在大括号块中使用以下几行来旋转日志文件之前和之后运行脚本:

postrotate
// скрипты для ротации журналов
endscript

如您所见,Linux具有旋转日志文件的完整解决方案。 您所要做的就是在现有结构中添加几行代码,并且可以自由旋转自己的日志文件!

请禁用您的广告拦截器或将此网站列入白名单!

Sidebar