RHEL / CentOS 设定 Logrotate 实现记录档轮替


在 Linux 如果用套件管理工具 (例如 yum, dnf, apt-get) 安装套件, 一般会设定好 logrotate 做记录档轮替, 但如果套件是自行编译安装, 或者是自行开发的系统 (例如 Shell Script), 除了可以自行编译记录档输替的功能外, 也可以用 Logrotate 实现。

Logrotate 的设定档是 /etc/logrotate.conf, 用作设定 Logrotate 的默认参数, 而 /etc/logrotate.d/ 目录下建立需要轮替的记录档, 每项服务一个档案, 这样对日后维护及管理也会较方便。

我的 Email Server 内安装的 qmailadmin, 安装了记录使用者登入及其他活动的 patch, 档案放在 /var/log/qmailadmin.log, 以下会用 Logrorate 设定记录档轮替作为示范例子, 使用者需要按您的记录档位置作出修改。

先建立一个新的 Logrotate 设定档:

# vi /etc/logrotate.d/qmailadmin

加入以下内容:

以下是上面设定项目的意思:

create – 建立新档案, owner 及 group 是 root, 权限是 600.
daily – 每天检查一次记录档.
missingok – 如果记录档不存在不会输出错误.
notifempty – 如果记录档是空白, 不会做轮替.
compress – 使用 gzip 压缩旧记录档.
size – 如果记录档大过 10MB 便会做轮替.

储存设定档后, Logrotate 便会生效, 以下可以对 Logrotate 进行测试, 建立一个测试用的记录档:

# echo “Logrotate Testing” > /var/log/qmailadmin.log

由于上面的测试记录档只有一行资料, 未达到设定的 10MB 轮替容量, 可以在 logrotate 后面加上 “-f” 参数进行测试, “-f” 代表不论档案大小均会强制输替, 但请留意, 下面指令会对 /etc/logrotate.d/ 目录下所有设定档的项目进行轮替:

# logrotate -f /var/log/qmailadmin.log

现在可以查看 /var/log 目录, 应该会有 /var/log/qmailadmin-yyyymmdd.gz 格式的旧档案, 而 /var/log/qmailadmin 则已经清空, 这样也代表 Logrotate 设定成功。

Leave a Reply