批量清理docker 容器日志

devtools/2025/1/19 15:55:23/

在日常开发过程中docker容器可能会有很大的日志占用空间,尝尝需要定期清理。下面提供查看容器日志大小和清理日志的一种解决方式

效果图

查看容器日志

bash docker_log_size.sh

在这里插入图片描述

清理日志

bash docker_clean_logs.sh

在这里插入图片描述

脚本

#!/bin/bash# 获取所有正在运行的容器ID
containers=$(docker ps -q)# 打印表头
printf "%-30s %-15s %s\n" "容器名称" "日志文件大小" "日志文件路径"
echo "-----------------------------------------------------------"# 循环遍历每个容器ID
for container in $containers; do# 获取容器名称container_name=$(docker inspect --format='{{.Name}}' $container | sed 's/^\///')# 获取容器的日志文件路径log_path=$(docker inspect --format='{{.LogPath}}' $container)# 获取日志文件大小log_size=$(du -h $log_path 2>/dev/null | awk '{print $1}')# 输出容器名称、日志文件大小和路径if [ -n "$log_size" ]; thenprintf "%-30s %-15s %s\n" "$container_name" "$log_size" "$log_path"fi
done | sort -k2 -hr
#!/bin/bash# 显示菜单选项
echo "请选择操作:"
echo "1. 全量清理所有容器日志"
echo "2. 清理指定容器日志(输入容器ID或名称,多个容器间用逗号隔开)"
read -p "输入选项编号(1或2): " choice# 清理日志的函数
clean_logs() {for container in $1; do# 获取容器的日志文件路径log_path=$(docker inspect --format='{{.LogPath}}' $container 2>/dev/null)# 判断日志路径是否存在if [ -f "$log_path" ]; thenecho "清理容器日志:$container (路径: $log_path)"cat /dev/null > "$log_path"  # 清空日志文件内容elseecho "无法找到容器 $container 的日志文件,跳过..."fidone
}if [ "$choice" -eq 1 ]; then# 选项1:清理所有容器日志containers=$(docker ps -q)clean_logs "$containers"
elif [ "$choice" -eq 2 ]; then# 选项2:清理指定容器日志read -p "请输入容器ID或名称(多个容器间用逗号隔开): " input# 将输入的容器名称或ID转换为数组IFS=',' read -ra container_array <<< "$input"# 清理指定容器的日志clean_logs "${container_array[@]}"
elseecho "无效的选项编号,请重新运行脚本并选择正确的选项。"
fi

总结

大家根据自己需要修改,如有问题欢迎留言讨论。


http://www.ppmy.cn/devtools/151849.html

相关文章

idea本地jar包添加到项目的maven库 mvn install:install-file

背景 最近在开发项目中需要对接海康威视摄像头&#xff0c;进行视频、照片等数据的获取保存&#xff1b;海康提供的sdk的jar包是自己开发的&#xff0c;在maven库中是找不到的&#xff0c;在项目中需要手动指定jar包路径 <dependency><groupId>com.haikang</g…

蓝桥杯刷题第二天——背包问题

题目描述 有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是Vi价值是Wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff0c;N&#xff0c;V&am…

游戏引擎学习第79天

当前任务回顾 我们目前的工作重点是碰撞检测的更新&#xff0c;特别是将游戏的世界表示方式扩展到三维空间。尽管游戏本身是二维的&#xff0c;但我们希望它能够在三维空间中处理更多的内容&#xff0c;以支持那些需要考虑高度的游戏元素&#xff0c;如楼层、台阶等。我们的目…

青少年CTF练习平台 文章管理系统(sqlmap使用os-shell找flag)PHP

题目 点击下一篇出现参数id&#xff0c;单引号报错 找到注入点启动sqlmap 用sqlmap的os-shell执行命令获取flag python sqlmap.py -u http://challenge.qsnctf.com:32372/?id1 --os-shell 执行命令查找flag find / -name flag* find / -name *flag 发现/flag目录&#xff0c…

如何在谷歌浏览器中设置自定义安全警告

随着网络环境的日益复杂&#xff0c;浏览器的安全问题也愈发引人关注。谷歌浏览器作为一款广泛使用的浏览器&#xff0c;其自定义安全警告功能为用户提供了更加个性化和安全的浏览体验。本文将详细介绍如何在谷歌浏览器中设置自定义安全警告&#xff0c;帮助用户更好地保护自己…

【C++】揭秘类与对象的内在机制(核心卷之深浅拷贝与拷贝构造函数的奥秘)

文章目录 一、前置知识---深浅拷贝1. 浅拷贝2. 深拷贝 1. 拷贝构造函数1. 默认生成的拷贝构造函数能干什么&#xff1f;2. 怎么写拷贝构造函数 前景提要&#xff1a;该篇文章的内容接上一篇&#xff0c;希望大家可以先学习上一篇文章讲到的构造函数和析构函数&#xff0c;否则可…

认识软件测试 - 软实力面试题

目录 1. 什么是测试 1.1 简单认识测试 1.2 为什么需要测试 1.3 软件测试的定义 2. 测试的岗位有哪些 2.1 面试题 [HR 面]: 测开和测试的区别是什么? 3. 软件测试 和 软件开发 3.1 测试和调试的区别 3.2 面试题: 走测试岗位为什么还要学开发知识? 4. 优秀软件测试人…

stm32控制直流电机程序

在STM32微控制器上控制直流电机通常涉及使用PWM&#xff08;脉宽调制&#xff09;信号来调节电机的速度&#xff0c;并通过GPIO&#xff08;通用输入输出&#xff09;端口来控制电机的启动、停止和方向。以下是一个简化的STM32控制直流电机的程序示例&#xff0c;该程序使用STM…