在Linux系统下非常实用的日志切割功能

很多时候我们的进程产生的日志都是没办法自动rotate的,所以需要我们自己去处理这些日志文件,如果不进行处理,在某些异常情况下,日志量可能会达到一个可怕的级别,这时候有可能会将你的磁盘挤爆,所以下面我们使用logrotate工具进行日志切割,该工具对日志的操作包含了基于天、周、月、文件大小等维度对日志进行滚动备份、压缩、删除甚至发送邮件。下面我们看下如何进行配置。

首先我们需要了解logrotate的一些常用的参数,下表是一些常用的参数以及其代表的意义。

在Linux系统下非常实用的日志切割功能

logrotate

上面就是我们常用的参数了,这时我们看下怎么使用这些参数组合成一个我们想要的配置文件,假如现在我们有一个需求:

  1. 使用的不是root用户而是yunzhongmuge这样的一个用户,该用户属于yunzhongmuge这个用户组

  2. 要是这个用户中某个组件的日志新创建的权限为0600,并且保留90天或大于200M就进行日志切割。

  3. 保留的日志文件历史记录为10,并且已经归档的日志文件权限为0440。

那么这个配置文件怎写呢?其实就是安装上面提供的参数拼接起来就好了,我们先在logrotate.d这个目录下新建一个logrotate.conf配置文件,并写入我们的参数,如下:

在Linux系统下非常实用的日志切割功能

logrotate.conf

然后我们把 的定时任务修改一下,并将日志的输出重定向到/var/log/yunzhongmuge这个目录,如下图:

在Linux系统下非常实用的日志切割功能

crontab1

这样我们就有一个不断写的日志,等到某个时刻就会大于200M,这时我们就需要在配置一个定时任务去监控到这个时刻,并执行日志切割的这个操作。如下:

在Linux系统下非常实用的日志切割功能

crontab2

因为设置的200M实在太大了,对于每分钟才输出一条数据的日志文件来说,所以为了方便我们现在测试,可以进行人为的注入日志量让它超过200M,然后重启一下crontab定时服务,再观察我们的日志是否进行了切割。如下:

在Linux系统下非常实用的日志切割功能

dd

在Linux系统下非常实用的日志切割功能

logrotate

从上可以明显看到,当我们使用命令对一个文件写数据时超过了我们设置200M,然后重启一下定时任务,等到日志切割任务执行后,就会对大的日志文件进行压缩。好了,本篇就到此结束了。谢谢您们的耐心阅读!


May you share freely, never taking more than you give.



分享到:


相關文章: