跳至内容

Linux的日志保留多久?如何更改?

发布日期:
作者:
评论数:暂无评论

文件的日志保留时间取决于系统的日志轮换设置。在Linux系统中,日志的保留时间取决于系统日志管理工具的配置,主要包括logrotatejournald两种。

1. logrotate

配置文件通常位于 /etc/logrotate.conf,查看该文件内容如下:

sudo vi /etc/logrotate.conf
# see "man logrotate" for details

# global options do not affect preceding include directives

# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
#dateext

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# system-specific logs may also be configured here.

如果你想具体修改某个服务或应用的日志保留时间,可能还需要检查该服务的 logrotate 配置文件,通常位于 /etc/logrotate.d/ 目录下。

例如 auth.log 日志保留时间可以通过以下步骤来查看或修改

1. 打开 /etc/logrotate.d/ 目录下的配置文件,看看是否有与 auth.log 相关的配置。常见的文件名可能是 rsyslogauth

2. 如果是rsyslog,运行命令:

sudo vi /etc/logrotate.d/rsyslog

查找类似以下的设置:

/var/log/auth.log {
    rotate 7
    daily
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

这个配置 daily 表示 auth.log 每天生成一个新文件。rotate 7 指的是保留 7 个轮换文件。也就是系统会保留最近7天的日志文件。

如果将 daily 换成 weekly ,表示每周生成一个新文件。rotate 7 指的是保留 7 个轮换文件。也就是系统会保留最近7周的日志文件。

如果你想更改日志保留的天数,你可以修改 logrotate 的配置文件,调整 rotate 参数的值,将 daily 改成weeklymonthlyyearly等。


2. journald(systemd 管理的日志)

  • journald 负责管理 systemd 生成的日志,通常是 journalctl 查看。

日志保留时间配置

  • journald 配置文件路径:
/etc/systemd/journald.conf
  • 关键参数:
bash复制编辑# 设置最大日志大小
SystemMaxUse=500M

# 设置日志保留时间
MaxRetentionSec=30day
  • 默认情况下,journald 可能无限期保留日志,直到磁盘空间达到 SystemMaxUse 配置。

更改 journald 日志保留时间

  1. 编辑配置文件:
sudo vi /etc/systemd/journald.conf
  1. [Journal] 部分添加或修改:
bash复制编辑[Journal]
# 保留 30 天的日志
MaxRetentionSec=30day

# 或限制日志占用最大空间
SystemMaxUse=1G
  1. 重新加载 journald 以应用更改:
sudo systemctl restart systemd-journald

手动清理日志

1. 清理 journald 日志

bash复制编辑# 删除 7 天前的日志
sudo journalctl --vacuum-time=7d

# 限制日志大小为 500MB
sudo journalctl --vacuum-size=500M

2. 清理 logrotate 日志

  • 强制手动运行 logrotate
sudo logrotate -f /etc/logrotate.conf

检查当前日志大小

查看 journald 日志大小

journalctl --disk-usage

查看 logrotate 管理的日志

du -sh /var/log/*

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注