0Pricing
Linux Server Deployment & SSH Mastery · 课时

日志轮换与归档

使用 `logrotate` 管理日志文件大小,防止磁盘空间耗尽,并确保高效的日志归档策略。

日志轮换与归档 是 CoddyKit 上的免费 Linux Server Deployment & SSH Mastery 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Server Deployment & SSH Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

日志轮换为何重要

服务器日志对于调试和监控至关重要,但它们会随着时间推移变得非常庞大。如果不加管理,日志可能很快占满磁盘空间,导致服务器不稳定甚至崩溃。

这时就需要日志轮换。这是高效管理日志文件大小的关键过程。

介绍 `logrotate` 实用程序

Linux 系统使用名为 logrotate 的实用程序自动管理日志文件。它用于:

  • 轮换日志(重命名旧日志)
  • 压缩旧日志以节省空间
  • 删除过旧的日志文件
  • 在轮换后运行自定义脚本

大多数 Linux 发行版都预装了 logrotate,并配置为通过定时任务每天运行。

`logrotate` 如何查找说明

logrotate 会从特定文件中读取配置。主要有两个位置:

  • /etc/logrotate.conf:主配置文件,通常包含全局设置和默认值。
  • /etc/logrotate.d/:各个应用程序和服务在其中放置各自日志轮换规则的目录。此目录中的每个文件都会作为单独的配置处理。

这种模块化方式使管理不同服务的规则变得简单。

设置日志轮换频率

首先需要定义的事项之一,是日志应多久轮换一次。logrotate 提供了多个指令:

  • daily:每天轮换日志。
  • weekly:每周轮换一次日志。
  • monthly:每月轮换一次日志。
  • yearly:每年轮换一次日志。

请选择能够平衡日志详细程度保留需求与磁盘空间使用量的频率。

保留一定数量的旧日志

rotate 指令会告知 logrotate 在删除最旧日志之前保留多少个旧日志文件。例如,rotate 4 表示保留当前日志文件以及四个轮换后的(归档)版本。

达到上限后,每次进行新的轮换时都会删除最旧的轮换日志。

压缩旧日志文件

为了进一步节省磁盘空间,logrotate 可以压缩旧日志文件。compress 指令正是用于此目的,通常使用 gzip。

启用此功能后,轮换后的日志会显示为 .gz 文件(例如 myapp.log.1.gz)。对于大多数服务器日志,强烈建议启用此功能。

按大小轮换,而不只是按时间

有时日志增长得非常快,仅按日或按周等待轮换并不足够。size 指令允许您在日志超过指定文件大小时进行轮换,而不受时间间隔限制。

  • size 100k:日志文件大于 100 KB 时进行轮换。
  • size 10M:日志文件大于 10 MB 时进行轮换。
  • size 1G:日志文件大于 1 GB 时进行轮换。

如果同时指定了时间间隔(例如 daily)和 size,则满足任一条件时都会进行轮换。

`logrotate` 配置示例

下面是一个简单的配置文件示例,您可能会在 /etc/logrotate.d/ 中找到类似文件,用于配置某个假想应用的日志文件:

此配置会每天轮换日志,保留 7 个旧副本,并对它们进行压缩。

/var/log/my_app/access.log {
    daily
    rotate 7
    compress
    notifempty
    missingok
}

手动运行 `logrotate`

虽然 logrotate 通常通过 cron 自动运行,但您也可以手动测试或强制执行日志轮换。主要命令是 logrotate /etc/logrotate.conf。

要强制执行轮换(测试配置时很有用),请使用 -f 标志:

  • logrotate -f /etc/logrotate.d/my_app:强制轮换指定配置文件中的日志。
  • logrotate -f /etc/logrotate.conf:强制轮换所有已配置的日志。

使用 -d(调试)标志可以查看将要执行的操作,而不会实际轮换任何日志。

快速检查:日志保留

请考虑下面针对 /var/log/webserver/error.log 的 logrotate 配置:

/var/log/webserver/error.log { weekly rotate 4 compress notifempty }

如果此配置已经运行了数周,那么您预计在任意时刻能找到多少个经过压缩的历史日志文件?

回顾:掌握日志管理

本课中,我们学习了如何使用 logrotate 有效管理服务器日志。我们了解到:

  • 日志轮换可以防止磁盘空间耗尽。
  • logrotate 使用 /etc/logrotate.conf 和 /etc/logrotate.d/ 中的配置文件。
  • 主要指令包括用于设置频率的 daily/weekly/monthly、用于设置保留数量的 rotate、用于节省空间的 compress,以及用于按条件轮换的 size。

妥善管理日志是确保服务器稳定运行的基础!

常见问题解答

「日志轮换与归档」课时是免费的吗?

是的 — 「日志轮换与归档」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Linux Server Deployment & SSH Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

「日志轮换与归档」这节课中我会学到什么?

使用 `logrotate` 管理日志文件大小,防止磁盘空间耗尽,并确保高效的日志归档策略。 你通过在浏览器中直接运行的动手代码来练习 Linux Server Deployment & SSH Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Linux Server Deployment & SSH Mastery 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Linux Server Deployment & SSH Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「日志轮换与归档」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Linux Server Deployment & SSH Mastery 课中编写并运行代码吗?

能。每节 Linux Server Deployment & SSH Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 系统监控工具
  2. 理解系统日志
  3. 日志轮换与归档
  4. 集中式监控与告警
← 返回 Linux Server Deployment & SSH Mastery