温馨提示×

linux如何清理旧日志文件

小樊
37
2026-10-20 04:44:44
栏目: 智能运维

在 Linux 中清理旧日志文件,常见方式和做法如下,按安全程度和使用场景说明:


一、最推荐:用系统自带工具(安全)

1. logrotate(推荐,自动清理)

大多数 Linux 发行版默认使用 logrotate 管理日志。

查看配置:

cat /etc/logrotate.conf
ls /etc/logrotate.d/

示例(保留 7 天日志):

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

手动执行:

logrotate -f /etc/logrotate.conf

✅ 优点:自动、安全、不会误删正在写的文件


二、手动清理旧日志(谨慎)

2. 删除 N 天前的日志

find /var/log -name "*.log" -mtime +7 -delete

或先查看再删:

find /var/log -name "*.log" -mtime +7

⚠ 注意:

  • +7 表示 7天前
  • 不要直接删 /var/log 整个目录

3. 清空日志文件(不删文件,推荐)

如果日志正在被程序写入,清空比删除更安全:

> /var/log/myapp.log

或:

truncate -s 0 /var/log/myapp.log

✅ 避免“文件删了但磁盘不释放”的问题


三、系统日志相关

4. systemd 日志(journalctl)

# 查看占用
journalctl --disk-usage

# 只保留最近 7 天
journalctl --vacuum-time=7d

# 限制最大 500MB
journalctl --vacuum-size=500M

配置文件:

/etc/systemd/journald.conf
SystemMaxUse=500M

四、Docker 日志(常见坑)

5. 清理 Docker 容器日志

docker system prune

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

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

五、不建议的做法 ❌

  • 直接 rm -rf /var/log/*
  • 删除正在写入的日志文件(可能导致磁盘不释放)
  • 不清空直接删数据库/服务日志

总结建议

场景 推荐方式
系统日志 logrotate
systemd journalctl --vacuum
正在写日志 truncate -s 0
旧文件 find -mtime +N
Docker 限制 max-size

如果你能告诉我 具体日志路径或系统(CentOS / Ubuntu / Docker),我可以给你更精确的命令。

0 踩