温馨提示×

Debian日志怎么清理

小樊
45
2026-08-11 11:52:36
栏目: 智能运维

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


一、systemd 日志(journal 日志)【最常见】

Debian 9+ 默认使用 systemd-journald

1️⃣ 查看当前 journal 日志大小

journalctl --disk-usage

示例输出:

Archived and active journals take up 1.2G in the file system.

2️⃣ 安全清理方式(推荐)

✅ 按时间清理(保留最近 7 天)

sudo journalctl --vacuum-time=7d

✅ 按大小清理(限制为 200M)

sudo journalctl --vacuum-size=200M

不会破坏系统,推荐服务器使用


3️⃣ 永久限制 journal 日志大小(强烈推荐)

编辑配置:

sudo nano /etc/systemd/journald.conf

修改或取消注释:

[Journal]
SystemMaxUse=200M
RuntimeMaxUse=100M

然后重启:

sudo systemctl restart systemd-journald

✅ 以后日志不会无限增长


二、/var/log 下的传统日志(rsyslog)

1️⃣ 常见日志文件

/var/log/syslog
/var/log/kern.log
/var/log/auth.log
/var/log/mail.log
/var/log/dpkg.log

2️⃣ 手动清理(不推荐直接 rm)

正确方式:清空而不是删除

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

❌ 不建议:

rm /var/log/syslog

(可能导致服务无法写入)


3️⃣ 使用 logrotate(推荐)

Debian 默认已安装并自动运行。

查看配置:

ls /etc/logrotate.d/

手动执行一次:

sudo logrotate -vf /etc/logrotate.conf

三、清理旧日志归档(.gz / .1 / .old)

sudo rm -f /var/log/*.gz
sudo rm -f /var/log/*.1
sudo rm -f /var/log/*.[0-9]

⚠️ 注意:这些通常是 历史日志,删除后无法恢复


四、Docker / Nginx / MySQL 等应用日志

Docker

docker system prune -f

或限制日志大小(daemon.json):

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

Nginx

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

五、一键清理脚本(安全版)

#!/bin/bash
echo "Cleaning journal logs..."
sudo journalctl --vacuum-time=7d

echo "Cleaning /var/log..."
sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
sudo find /var/log -type f \( -name "*.gz" -o -name "*.1" \) -delete

echo "Done."

六、推荐配置总结 ✅

项目 建议
journal 日志 限制 200M
syslog 用 logrotate
清理方式 truncate,不 rm
服务器 定期 vacuum

如果你愿意,可以告诉我:

  • ✅ Debian 版本(cat /etc/debian_version
  • ✅ 是 服务器 / 桌面 / Docker 主机
  • ✅ 磁盘快满了吗?

我可以帮你精确分析哪些日志最占空间

0