温馨提示×

Ubuntu怎么清理日志文件

小樊
35
2026-08-29 07:40:27
栏目: 智能运维

在 Ubuntu 系统中,日志文件主要由 systemd-journaldrsyslog 管理。下面是安全、常用、由浅入深的清理方法,推荐按顺序使用。


一、查看日志占用空间(先做)

journalctl --disk-usage

或:

du -sh /var/log

二、清理 systemd 日志(最常用 ✅)

1️⃣ 清理旧日志(安全)

sudo journalctl --vacuum-time=7d

保留最近 7 天日志,其余删除

或按大小:

sudo journalctl --vacuum-size=100M

2️⃣ 立即清空当前日志(谨慎)

sudo journalctl --rotate
sudo journalctl --vacuum-time=1s

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

编辑:

sudo nano /etc/systemd/journald.conf

修改或取消注释:

SystemMaxUse=100M
RuntimeMaxUse=50M

重启服务:

sudo systemctl restart systemd-journald

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

1️⃣ 手动清理(推荐)

sudo du -sh /var/log/*

常见可清理:

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

⚠️ 不要用 rm 删除日志文件,否则正在运行的程序可能出错。


2️⃣ 删除旧轮转日志(.gz)

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

四、使用自带清理工具(简单粗暴)

1️⃣ 使用 logrotate 自动管理(Ubuntu 默认开启)

检查:

cat /etc/logrotate.conf

一般无需手动干预。


五、Docker / Nginx / MySQL 用户注意

Docker

docker system prune -f

Nginx

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

MySQL

sudo truncate -s 0 /var/log/mysql/error.log

六、一键清理脚本(自用推荐 ✅)

#!/bin/bash
echo "Cleaning logs..."
sudo journalctl --vacuum-size=100M
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
sudo truncate -s 0 /var/log/auth.log
sudo rm -f /var/log/*.gz
echo "Done."

保存为 clean_log.sh

chmod +x clean_log.sh
./clean_log.sh

七、建议的日志管理策略 ✅

项目 建议
journal 日志 限制 100–200M
/var/log 定期 truncate
Docker 定期 prune
服务器 开启 logrotate

如果你愿意,我可以:

  • ✅ 帮你分析 当前日志占用原因
  • ✅ 给你 服务器专用清理方案
  • ✅ 排查 某个日志异常增长的问题

直接把下面命令的输出发我即可:

df -h
journalctl --disk-usage
du -sh /var/log/*

0