以下是针对 Docker 部署的 Java 项目日志清理的常用命令流程。假设日志文件前缀为 app(请根据实际情况替换),且操作在存放日志的目录下执行。
bashdf -h
显示各分区磁盘使用情况(人类可读格式,含单位)。若只看根分区:df -h /
bashdu -sm .
输出当前目录总大小(MB)。若需更直观:du -sh .(自动选单位)
bashfind . -type f -name "app*.log"
递归查找当前目录下所有以 app 开头、.log 结尾的文件。可先执行此命令确认待删除文件列表。
bashfind . -type f -name "app*.log" -delete
安全删除(直接在 find 中删除,无需额外命令)。
备用方案(仅在当前目录且文件较少时):rm -f app*.log
当文件数量极大(数万以上)时,使用 xargs 并行删除效率更高:
bashfind . -type f -name "app*.log" -print0 | xargs -0 rm -f
-print0 和 -0 处理文件名中的空格或特殊字符。-P 并行,如 xargs -0 -P 4 rm -f(4 进程并行)。Java 应用在容器内输出到 stdout/stderr 的日志由 Docker 接管,可能导致磁盘占用过高。可执行以下操作:
bashdocker system df
bashdocker system prune -a
⚠️ 会删除所有停止的容器、未使用的镜像和网络,请确认不影响正在运行的服务。
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 中:
yamllogging:
options:
max-size: "10m"
max-file: "3"
app 换成你的实际日志前缀(如 catalina、application)。find . 会递归所有子目录,如需限制深度可加 -maxdepth 1。sudo。按需组合上述命令即可完成日志清理。
本文作者:Weee
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!