Linux的日志保留多久?如何更改?
发布日期:
作者: 西木
评论数:暂无评论
文件的日志保留时间取决于系统的日志轮换设置。在Linux系统中,日志的保留时间取决于系统日志管理工具的配置,主要包括logrotate和journald两种。
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 相关的配置。常见的文件名可能是 rsyslog 或 auth。
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 改成weekly、monthly或yearly等。
2. journald(systemd 管理的日志)
- journald负责管理- systemd生成的日志,通常是- journalctl查看。
日志保留时间配置
- journald配置文件路径:
/etc/systemd/journald.conf- 关键参数:
bash复制编辑# 设置最大日志大小
SystemMaxUse=500M
# 设置日志保留时间
MaxRetentionSec=30day
- 默认情况下,journald可能无限期保留日志,直到磁盘空间达到SystemMaxUse配置。
更改 journald 日志保留时间
- 编辑配置文件:
sudo vi /etc/systemd/journald.conf- 在 [Journal]部分添加或修改:
bash复制编辑[Journal]
# 保留 30 天的日志
MaxRetentionSec=30day
# 或限制日志占用最大空间
SystemMaxUse=1G
- 重新加载 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/*