当前位置:首页 > Ubuntu > 正文

Ubuntu日志轮转完全指南(使用logrotate高效管理Linux系统日志)

在Linux系统中,尤其是Ubuntu服务器上,应用程序和服务会不断生成日志文件。如果不加以管理,这些日志文件可能会无限增长,最终耗尽磁盘空间,导致系统崩溃。为了解决这个问题,logrotate应运而生——它是Linux中最常用、最强大的日志轮转工具之一。

Ubuntu日志轮转完全指南(使用logrotate高效管理Linux系统日志) Ubuntu logrotate 日志轮转配置 Linux日志管理 logrotate教程 第1张

什么是logrotate?

logrotate 是一个用于自动轮转、压缩、删除和邮寄日志文件的实用程序。它可以根据时间(如每天、每周)或文件大小来触发操作,确保日志不会无限制增长。

在Ubuntu系统中,logrotate 默认已安装,并通过 cron 每天自动运行一次(通常在 /etc/cron.daily/logrotate 中配置)。

logrotate 的核心功能

  • 按时间(日/周/月)或文件大小轮转日志
  • 压缩旧日志以节省磁盘空间
  • 保留指定数量的历史日志文件
  • 在轮转前后执行自定义脚本(如重启服务)
  • 支持邮件通知(可选)

Ubuntu logrotate 配置文件结构

logrotate 的主配置文件位于:

/etc/logrotate.conf

此外,每个应用程序可以有自己的配置文件,存放在:

/etc/logrotate.d/

例如,Nginx、Apache、MySQL 等服务都会在此目录下创建自己的配置文件。

编写一个简单的 logrotate 配置(实战示例)

假设你有一个自定义应用,日志文件路径为 /var/log/myapp/app.log,你想实现以下需求:

  • 每天轮转一次
  • 保留7个历史日志
  • 压缩旧日志(使用 gzip)
  • 如果日志为空,不进行轮转
  • 轮转后重启你的应用服务

你可以创建一个配置文件:

sudo nano /etc/logrotate.d/myapp

然后写入以下内容:

/var/log/myapp/app.log {    daily    missingok    rotate 7    compress    delaycompress    notifempty    create 644 myuser mygroup    postrotate        systemctl reload myapp.service > /dev/null 2>&1 || true    endscript}

配置项解释:

  • daily:每天轮转一次(也可用 weekly、monthly)
  • missingok:如果日志文件不存在,不报错
  • rotate 7:保留7个旧日志文件
  • compress:使用 gzip 压缩轮转后的日志
  • delaycompress:延迟压缩,即本次轮转的日志下次再压缩(方便调试)
  • notifempty:如果日志为空,跳过轮转
  • create 644 myuser mygroup:轮转后创建新日志文件,权限644,属主myuser,属组mygroup
  • postrotate ... endscript:轮转完成后执行的命令(如重载服务)

测试 logrotate 配置是否生效

不要等到第二天!你可以手动测试配置是否正确:

sudo logrotate -d /etc/logrotate.d/myapp

-d 表示“debug”模式,只会模拟运行,不会实际修改文件。

如果想强制立即执行轮转(用于测试),使用:

sudo logrotate -f /etc/logrotate.d/myapp

-f 表示“force”,强制轮转,即使未到时间或文件未满。

常见问题与最佳实践

  • ✅ 确保日志目录有写权限,否则 create 会失败
  • ✅ 使用 postrotate 时,建议加上 || true 避免脚本错误中断整个流程
  • ✅ 定期检查 /var/lib/logrotate/status 文件,它记录了每个日志上次轮转的时间
  • ❌ 不要手动删除正在被轮转的日志文件,可能导致服务写入失败

总结

通过合理配置 Ubuntu logrotate,你可以轻松实现自动化日志管理,避免磁盘爆满,提升系统稳定性。无论是新手还是运维工程师,掌握 logrotate教程 中的核心概念和配置方法,都是 Linux日志管理 的必备技能。记住,良好的 日志轮转配置 是专业运维的第一步!

本文适用于 Ubuntu 18.04 / 20.04 / 22.04 及其他基于 Debian 的 Linux 发行版。