Hary / untitled
620 字
3 分钟
管理 debian 日志大小
安装依赖
- 安装
logrotateTerminal window sudo apt updateTerminal window sudo apt install logrotate
使用logrotate管理日志大小
配置文件路径说明
logrotate的主配置文件在/etc/logrotate.conflogrotate的子配置文件在/etc/logrotate.d/
编辑配置文件
-
原来日志占用大小
Terminal window ls -llh |grep daemon.log#-rw-r----- 1 root adm 469M Jul 8 21:43 daemon.log#rw-r----- 1 root adm 1.2G Jul 6 00:00 daemon.log.1#-rw-r----- 1 root adm 40M Jun 29 00:00 daemon.log.2.gz#-rw-r----- 1 root adm 40M Jun 22 00:00 daemon.log.3.gz#-rw-r----- 1 root adm 40M Jun 15 00:00 daemon.log.4.gz -
修改
Terminal window sudo vim /etc/logrotate.d/rsyslog# ...其他配置文件/var/log/daemon.log{size 5Mrotate 5compressmissingoknotifemptydelaycompresspostrotate/usr/lib/rsyslog/rsyslog-rotateendscript}- 参数说明:
-
size 5M:单个日志文件最大为 5MB。 -
rotate 5:最多保留 5 个轮转文件。 -
compress:旧文件压缩为 .gz。 -
delaycompress:推迟一轮压缩,以防被新进程写入。 -
notifempty:若文件为空则不轮转。 -
missingok:文件不存在不会报错。 -
postrotate:轮转后重启 rsyslog。
-
- 参数说明:
-
测试配置
Terminal window sudo logrotate -d /etc/logrotate.conf # 测试模式,不实际执行Terminal window sudo logrotate -f /etc/logrotate.conf # 强制执行一次 -
现在日志占用大小
Terminal window ls -llh |grep daemon.log#-rw-r----- 1 root adm 52K Jul 8 21:54 daemon.log#-rw-r----- 1 root adm 470M Jul 8 21:54 daemon.log.1#-rw-r----- 1 root adm 40M Jul 6 00:00 daemon.log.2.gz#-rw-r----- 1 root adm 40M Jun 29 00:00 daemon.log.3.gz#-rw-r----- 1 root adm 40M Jun 22 00:00 daemon.log.4.gz#-rw-r----- 1 root adm 40M Jun 15 00:00 daemon.log.5.gz
管理journald日志大小
-
查看管理前
journald占用日志大小Terminal window sudo journalctl --disk-usage# Archived and active journals take up 3.9G in the file system. -
编辑配置文件
Terminal window sudo vim /etc/systemd/journald.conf[Journal]SystemMaxUse=200MSystemMaxFileSize=50MSystemKeepFree=100MMaxRetentionSec=1monthCompress=yes- 参数说明:
SystemMaxUse=200M/var/log/journal 总大小上限SystemMaxFileSize=50M单个日志文件最大 50MBSystemKeepFree=100M至少保留 100MB 可用磁盘空间MaxRetentionSec=1month日志最多保留一个月Compress=yes启用压缩,节省磁盘空间(默认已启用)
- 参数说明:
-
重启
journald服务Terminal window sudo systemctl restart systemd-journald -
清理已有
journald日志Terminal window sudo journalctl --vacuum-size=200M -
查看当前
journald占用日志大小Terminal window sudo journalctl --disk-usage# Archived and active journals take up 240.2M in the file system.
常见问题
- 为什么执行logrotate清理日志后旧文件不会被
5M限制?- size
5M只控制“当前文件何时触发轮转”,并不限制 .1、.2 等旧文件的大小
- size
- 为什么清理完
journald日志后日志占用磁盘还是超过200M?--vacuum-size=200M的作用不是让日志压缩到“最多 200M”,而是:“清除归档日志(archived journals),直到归档部分的总大小小于 200M”。但 “活动日志”(active journal)不会被清除,只会保留当前 journald 正在写入的日志文件。
/var/log/journal/└─ <MACHINE-ID>/├─ system@0005xxxx.journal (归档)├─ system@0006xxxx.journal (归档)└─ system.journal (当前活动日志)
管理 debian 日志大小
https://blog.beocean.net/posts/log-manage/