记录档管理工具 – logrotate


记录档在遇到问题时, 对于找出出问题及除错十分有用。但由于记录档不断储存后, 所占用的硬盘空间会越来越多, 所以便有了纪录档轮替的工具, 而 logrotate 便是 RHEL / CentOS 下的默认记录档轮替工具。

logrotate 默认会每天自动执行, 执行时会根据设定档 /etc/logrotate.conf 对指定的记录档轮替, 可以是每天、每星期、按档案大小等自动轮替, 以及会旧有的记录档会保存多久。

/etc/logrotate.conf 内设定了会 include 目录 /etc/logrotate.d 的档案, 可以将个别记录档的轮替设定, 在这个目录建立新的档案设定, 对日后的管理也较方便。

以 httpd 为例, 它的轮替设定档在 /etc/logrotate.d/httpd, 开启这个档案可以查看设定的方法:

/opencli.com/terminal

  • # vi /etc/logrotate.d/httpd

以下是 /etc/logrotate.d/httpd 的内容:

第一行 /var/log/httpd/*log 表示 /var/log/httpd/ 目录下, 所有以 “log” 结尾的档案, 以及不是空白的档案进行轮替。

而 postrotate 及 endscript 中间的指令 (上面例子是重新加载 httpd 服务), 表示当有记录档进行轮替后, 会执行的指令。

以上例子没有对记录档轮替进行设定, 所以会使用 /etc/logrotate.conf 的设定。

以下是一些常用设定可以自订:

rotate:

保留多少份旧记录档, 默认值是 4 份旧记录, 如果想改成 7 份旧记录, 改成这样:

轮替间隔:

默认值是 “weekly”, 即每星期轮替一次, 可以有以下设定:

daily (每天)
weekly (每星期)
monthly (每月)
yearly (每年)

档案大小:

另一个轮替方法是按记录档的体积大小, 以下是 100KB, 100MB 及 100GB 的语法:

size 100k
size 100M
size 100G

如果要将旧记录档用 gzip 压缩, 可以加入以下一行:

compress

logrotate 的设定只要储存设定档后, 不用重启服务, 会立即生效。

以上是 logrotate 的常用设定方法。

Leave a Reply