Logrotate 的使用

Logrotate 是 Linux 系统中用于管理日志文件的标准工具,能够自动对日志进行轮转(切割)、压缩、删除和邮件发送。

运行 man logrotate 或者访问文件 logrotate.8.in 可以查阅说明书。本文基于手册列举一些基本用法。

新建一个轮转服务,执行

sudo nano /etc/logrotate.d/your-log-set

在文件内记录轮转服务的细节

# 使用井号写注释

compress # 所有提到的配置压缩

# ↑ 可以在文件任意位置这样写该文件的全局设置

# 定义一个日志文件的轮转规则

/var/log/messages {
    rotate 5
    weekly
    postrotate
        /usr/bin/killall \-HUP syslogd
    endscript
}

# 多个文件的规则,对于特殊文件名支持引号和转义符号

"/var/log/httpd/access.log" /var/log/httpd/error.log {
    rotate 5
    mail [email protected]
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall \-HUP httpd
    endscript
}

/var/log/news/* {
    monthly
    rotate 2
    olddir /var/log/news/old
    missingok
    sharedscripts
    postrotate
        kill \-HUP $(cat /var/run/inn.pid)
    endscript
    nocompress
}

~/log/*.log {}

撰写后,记得用 -d 进行 dry run 模拟运行。也可以直接用 -f 试跑。

sudo logrotate -d /etc/logrotate.d/your-log-set

有时候目录无权限,提示 error: skipping "site.log" because parent directory has insecure permissions,可能需要用其他账户来执行

/var/log/www/site.log {
    # ...
    su www-data www-data
}

添加新评论