Linux logrotate 命令实战示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用 Linux 的 logrotate 命令来管理系统中的日志文件。logrotate 是一个实用工具,能够自动轮换、压缩和删除旧的日志文件,从而帮助维护系统的健康性和性能。你将首先探索 logrotate 命令的基本用法,包括检查已安装的版本以及理解默认配置。然后,你将配置 logrotate 来管理 Apache 网页服务器的日志,并根据你的具体需求自定义轮换设置。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/touch -.-> lab-422769{{"Linux logrotate 命令实战示例"}} linux/cat -.-> lab-422769{{"Linux logrotate 命令实战示例"}} linux/less -.-> lab-422769{{"Linux logrotate 命令实战示例"}} linux/chmod -.-> lab-422769{{"Linux logrotate 命令实战示例"}} linux/service -.-> lab-422769{{"Linux logrotate 命令实战示例"}} linux/sudo -.-> lab-422769{{"Linux logrotate 命令实战示例"}} linux/apt -.-> lab-422769{{"Linux logrotate 命令实战示例"}} linux/nano -.-> lab-422769{{"Linux logrotate 命令实战示例"}} end

Logrotate 命令介绍

在这一步中,你将学习 Linux 中的 logrotate 命令。logrotate 是一个实用工具,通过自动轮换、压缩和删除旧的日志文件来帮助管理日志文件。这对于维护系统的健康性和性能非常重要,因为如果日志文件没有得到妥善管理,它们可能会迅速占用大量磁盘空间。

首先,让我们检查系统中安装的 logrotate 版本:

sudo logrotate --version

示例输出:

logrotate 3.18.1

接下来,让我们探索 logrotate 命令的基本用法。logrotate 命令会读取配置文件 /etc/logrotate.conf 以及 /etc/logrotate.d/ 目录中的任何配置文件,以确定如何轮换日志文件。

要查看默认配置,你可以运行:

sudo cat /etc/logrotate.conf

这将显示日志轮换的默认设置,例如轮换频率、保留的旧日志文件数量以及使用的压缩方法。

你也可以使用 logrotate 命令手动轮换日志文件。例如,要轮换 Apache 访问日志,你可以运行:

sudo logrotate /etc/logrotate.d/apache2

这将立即轮换 Apache 访问日志文件,而不管配置的轮换计划如何。

为 Apache Web 服务器日志配置 Logrotate

在这一步中,你将学习如何配置 logrotate 来管理 Apache Web 服务器的日志。

首先,让我们安装 Apache Web 服务器:

sudo apt-get update
sudo apt-get install -y apache2

安装完成后,你可以检查默认的 Apache 日志文件:

ls -l /var/log/apache2/

示例输出:

-rw-r--r-- 1 root root   0 Apr 26 12:00 access.log
-rw-r--r-- 1 root root   0 Apr 26 12:00 error.log

现在,让我们为 Apache 日志创建一个自定义的 logrotate 配置文件:

sudo nano /etc/logrotate.d/apache2

添加以下配置:

/var/log/apache2/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        if /etc/init.d/apache2 status > /dev/null; then
            /etc/init.d/apache2 reload > /dev/null
        fi
    endscript
}

此配置将:

  • 每天轮换 Apache 的访问日志和错误日志
  • 保留 7 天的日志文件
  • 压缩轮换后的日志文件
  • 使用指定的权限创建新的日志文件
  • 在轮换后重新加载 Apache 服务,以确保使用新的日志文件

要测试配置,你可以手动轮换日志:

sudo logrotate /etc/logrotate.d/apache2

再次检查日志目录以查看轮换后的文件:

ls -l /var/log/apache2/

示例输出:

-rw-r--r-- 1 root root   0 Apr 26 12:00 access.log
-rw-r--r-- 1 root root   0 Apr 26 12:00 error.log
-rw-r--r-- 1 root root   0 Apr 26 12:01 access.log.1.gz
-rw-r--r-- 1 root root   0 Apr 26 12:01 error.log.1.gz

为特定日志文件自定义 Logrotate 配置

在这一步中,你将学习如何为系统中的特定日志文件自定义 logrotate 配置。

让我们创建一个自定义日志文件,并配置 logrotate 来管理它。

首先,创建一个示例日志文件:

sudo touch /var/log/custom.log
sudo chmod 644 /var/log/custom.log

现在,为自定义日志创建一个新的 logrotate 配置文件:

sudo nano /etc/logrotate.d/custom-logs

添加以下配置:

/var/log/custom.log {
    weekly
    rotate 4
    compress
    delaycompress
    notifempty
    create 644 root adm
}

此配置将:

  • 每周轮换 custom.log 文件
  • 保留 4 周的日志文件
  • 压缩轮换后的日志文件
  • 使用指定的权限创建新的日志文件

要测试配置,你可以手动轮换日志:

sudo logrotate /etc/logrotate.d/custom-logs

检查日志目录以查看轮换后的文件:

ls -l /var/log/

示例输出:

-rw-r--r-- 1 root adm     0 Apr 26 12:00 custom.log
-rw-r--r-- 1 root adm     0 Apr 19 12:00 custom.log.1.gz
-rw-r--r-- 1 root adm     0 Apr 12 12:00 custom.log.2.gz
-rw-r--r-- 1 root adm     0 Apr  5 12:00 custom.log.3.gz
-rw-r--r-- 1 root adm     0 Mar 29 12:00 custom.log.4.gz

你还可以通过创建额外的配置文件在 /etc/logrotate.d/ 目录中,为系统中的其他日志文件(例如特定应用程序的日志或系统日志)自定义 logrotate 配置。

总结

在本实验中,你学习了 Linux 中的 logrotate 命令,这是一个通过自动轮换、压缩和删除旧日志文件来帮助管理日志文件的实用工具。你探索了 logrotate 命令的基本用法,包括检查版本、查看默认配置以及手动轮换日志文件。此外,你还配置了 logrotate 来管理 Apache Web 服务器的日志,创建了一个自定义的 logrotate 配置文件,并了解了日志轮换的各种可用选项。

Linux 命令速查表