温馨提示×

怎么清理Debian旧日志

小樊
35
2026-08-23 04:00:03
栏目: 智能运维

在 Debian 系统中,日志主要由 systemd-journaldrsyslog/syslog 以及应用程序自身产生。下面按常见场景给你一套安全、可控的清理方法


一、清理 systemd 日志(最常见)

1️⃣ 查看当前 journal 日志占用

journalctl --disk-usage

2️⃣ 保留最近 N 天日志

sudo journalctl --vacuum-time=7d

3️⃣ 限制日志最大占用空间

sudo journalctl --vacuum-size=100M

4️⃣ 永久限制 journal 日志大小(推荐)

编辑配置文件:

sudo nano /etc/systemd/journald.conf

修改或添加:

SystemMaxUse=200M
RuntimeMaxUse=100M

然后重启服务:

sudo systemctl restart systemd-journald

这是最推荐的方式,安全且不会影响系统运行


二、清理 /var/log 下的传统日志

1️⃣ 查看日志占用情况

du -sh /var/log/*

2️⃣ 手动清理旧日志(不要直接删目录)

sudo rm -f /var/log/*.log.*
sudo rm -f /var/log/syslog.*
sudo rm -f /var/log/kern.log.*

⚠️ 不要直接删除正在写入的 .log 文件

3️⃣ 清空正在使用的日志(安全方式)

sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log

三、使用 logrotate(自动清理,推荐)

Debian 默认已安装 logrotate

查看配置

ls /etc/logrotate.d/

手动执行一次

sudo logrotate -f /etc/logrotate.conf

✅ 日志轮转规则已自动处理大部分日志


四、清理 apt / dpkg 旧日志

sudo rm -f /var/log/apt/*
sudo rm -f /var/log/dpkg.log.*

五、清理用户或应用日志(如 Docker、Nginx)

Docker

docker system prune

Nginx

sudo truncate -s 0 /var/log/nginx/access.log
sudo truncate -s 0 /var/log/nginx/error.log

六、一键安全清理示例(推荐)

sudo journalctl --vacuum-time=7d
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log

七、不推荐的做法 ❌

  • rm -rf /var/log/*
  • ❌ 删除正在写入的 .log 文件
  • ❌ 关闭 journald 或 syslog

八、如果你愿意,我可以帮你:

  • ✅ 排查 哪个日志异常大
  • ✅ 定制 自动清理策略
  • ✅ 设置 日志只保留 3 天 / 100MB
  • ✅ 针对 服务器 / 桌面 / Docker 环境 优化

你可以直接贴一下:

journalctl --disk-usage
du -sh /var/log

0