+
89
-

回答

在 CentOS 上,logrotate 是一个用于管理日志文件的工具,它可以帮助你自动切割、压缩和删除旧的日志文件,以防止日志文件无限增长。logrotate 通常用于管理系统日志、应用程序日志等。

1. logrotate 的基本使用1.1 配置文件

logrotate 的配置文件通常位于 /etc/logrotate.conf,但大多数具体的日志轮转规则都放在 /etc/logrotate.d/ 目录下。

1.2 配置文件结构

一个典型的 logrotate 配置文件结构如下:

/path/to/your/logfile {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 640 user group
    postrotate
        /usr/bin/systemctl reload your_service.service > /dev/null 2>&1 || true
    endscript
}
/path/to/your/logfile: 要轮转的日志文件路径。daily: 每天轮转一次。rotate 7: 保留7个旧的日志文件。compress: 压缩旧的日志文件。missingok: 如果日志文件不存在,不报错。notifempty: 如果日志文件为空,不轮转。create 640 user group: 轮转后创建一个新的日志文件,并设置权限为 640,属主为 user,属组为 group。postrotate: 轮转后执行的命令。通常用于重新加载服务。1.3 手动运行 logrotate

你可以手动运行 logrotate 来测试配置:

sudo logrotate /etc/logrotate.conf

或者只针对某个配置文件:

sudo logrotate /etc/logrotate.d/your_config
2. 示例:轮转 Nginx 日志

假设你有一个 Nginx 服务,日志文件位于 /var/log/nginx/access.log 和 /var/log/nginx/error.log。你可以在 /etc/logrotate.d/ 目录下创建一个配置文件 nginx:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 nginx adm
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}
/var/log/nginx/*.log: 匹配所有以 .log 结尾的日志文件。daily: 每天轮转一次。rotate 14: 保留14个旧的日志文件。compress: 压缩旧的日志文件。delaycompress: 延迟压缩,即在下次轮转时才压缩上次的日志文件。create 640 nginx adm: 创建新的日志文件,权限为 640,属主为 nginx,属组为 adm。postrotate: 轮转后重新加载 Nginx 服务。3. 常见问题3.1 日志文件没有被轮转检查 logrotate 的 cron 任务是否正常运行。logrotate 通常由 /etc/cron.daily/logrotate 脚本每天运行一次。确保日志文件路径正确,并且有读写权限。3.2 日志文件被删除而不是轮转检查 rotate 参数是否设置正确,确保保留的日志文件数量不为0。3.3 日志文件没有被压缩确保 compress 参数已启用。4. 总结

logrotate 是一个非常强大的工具,可以帮助你自动化日志管理。通过合理的配置,你可以确保日志文件不会无限增长,同时保留足够的历史日志供分析和排查问题。

网友回复

我知道答案,我要回答