编辑
2023-02-25
学习记录
00
请注意,本文编写于 1180 天前,最后修改于 0 天前,其中某些信息可能已经过时。

目录

日志清理流程
1. 查询系统当前存储占用
2. 当前文件夹的存储占用(MB)
3. 搜索指定名称前缀的 log 日志
4. 删除指定名称前缀的 log 日志
5. 快速批量删除指定名称前缀的 log 日志
Docker 相关补充(适用于容器日志)
查看 Docker 存储占用
清理未使用的 Docker 资源(容器、镜像、网络、构建缓存)
仅清理单个容器的日志文件(需 root 或 sudo)
限制容器日志大小(推荐配置,防止再次爆满)
注意事项

日志清理流程

以下是针对 Docker 部署的 Java 项目日志清理的常用命令流程。假设日志文件前缀为 app(请根据实际情况替换),且操作在存放日志的目录下执行。

1. 查询系统当前存储占用

bash
df -h

显示各分区磁盘使用情况(人类可读格式,含单位)。若只看根分区:df -h /

2. 当前文件夹的存储占用(MB)

bash
du -sm .

输出当前目录总大小(MB)。若需更直观:du -sh .(自动选单位)

3. 搜索指定名称前缀的 log 日志

bash
find . -type f -name "app*.log"

递归查找当前目录下所有以 app 开头、.log 结尾的文件。可先执行此命令确认待删除文件列表。

4. 删除指定名称前缀的 log 日志

bash
find . -type f -name "app*.log" -delete

安全删除(直接在 find 中删除,无需额外命令)。
备用方案(仅在当前目录且文件较少时):rm -f app*.log

5. 快速批量删除指定名称前缀的 log 日志

当文件数量极大(数万以上)时,使用 xargs 并行删除效率更高:

bash
find . -type f -name "app*.log" -print0 | xargs -0 rm -f
  • -print0-0 处理文件名中的空格或特殊字符。
  • 若追求极致速度,可加 -P 并行,如 xargs -0 -P 4 rm -f(4 进程并行)。

Docker 相关补充(适用于容器日志)

Java 应用在容器内输出到 stdout/stderr 的日志由 Docker 接管,可能导致磁盘占用过高。可执行以下操作:

查看 Docker 存储占用

bash
docker system df

清理未使用的 Docker 资源(容器、镜像、网络、构建缓存)

bash
docker system prune -a

⚠️ 会删除所有停止的容器、未使用的镜像和网络,请确认不影响正在运行的服务。

仅清理单个容器的日志文件(需 root 或 sudo)

bash
# 获取容器日志路径 LOG_PATH=$(docker inspect --format='{{.LogPath}}' 容器名或ID) # 清空日志 sudo truncate -s 0 $LOG_PATH

限制容器日志大小(推荐配置,防止再次爆满)

docker run 时添加参数:

bash
--log-opt max-size=10m --log-opt max-file=3

或在 docker-compose.yml 中:

yaml
logging: options: max-size: "10m" max-file: "3"

注意事项

  • 先搜索后删除:执行删除前,务必先运行搜索命令确认文件范围无误。
  • 替换前缀:将命令中的 app 换成你的实际日志前缀(如 catalinaapplication)。
  • 递归影响find . 会递归所有子目录,如需限制深度可加 -maxdepth 1
  • 权限问题:如删除失败,检查文件权限或使用 sudo

按需组合上述命令即可完成日志清理。

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!