Debian日志回收与轮转实践
一 核心机制与总体思路
: > /var/log/syslog),但更推荐走 logrotate 的 postrotate 重载机制。二 使用 logrotate 进行日志轮转
sudo apt-get update && sudo apt-get install logrotatelogrotate --versionservice reload 让服务重新打开日志文件。/var/log/syslog
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 0640 root adm
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslogd reload > /dev/null 2>&1 || true
endscript
}
/var/log/apache2/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if [ -x /usr/sbin/invoke-rc.d ]; then
/usr/sbin/invoke-rc.d apache2 reload >/dev/null 2>&1 || true
fi
endscript
}
sudo logrotate -d /etc/logrotate.d/rsyslogsudo logrotate -f /etc/logrotate.d/rsyslogsudo logrotate -f /etc/logrotate.conf三 使用 journalctl 回收 systemd 日志
sudo journalctl --vacuum-time=2weekssudo journalctl --vacuum-size=100MSystemMaxUse=100MMaxRetentionSec=2weekssudo systemctl restart systemd-journald四 手动清理与风险规避
: > /var/log/syslogfind /var/log -name "*.gz" -mtime +30 -deleterm 正在写入的日志可能导致应用无法继续写入或 logrotate 状态异常;如需手动清理,优先使用 : > 清空,或先停止写入再处理,随后用 logrotate 正常轮转。五 快速排查与常用命令
sudo du -sh /var/log/* | sort -hsudo find / -type f -size +1G 2>/dev/nullls /etc/cron.daily/logrotatesudo logrotate -d /etc/logrotate.d/rsyslogsudo logrotate -f /etc/logrotate.d/rsyslogjournalctl --disk-usage;编辑 /etc/systemd/journald.conf 设置 SystemMaxUse 与 MaxRetentionSec 后重启 systemd-journald。