达到指定百分比 删除镜像脚本
df -h 查找到 内存占用信息 ,得到的 文件系统名称是 overlay的,Use% 达到70就进行删除docker 镜像
shell
#!/bin/bash
# 设置磁盘使用阈值
THRESHOLD=70
# 获取 overlay 文件系统的磁盘使用百分比
DISK_USAGES=$(df -h | grep overlay | awk '{print $5}' | sed 's/%//')
# 遍历每个使用百分比
for USAGE in $DISK_USAGES; do
# 检查磁盘使用是否超过阈值
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "磁盘使用已超过阈值 $THRESHOLD%. 正在删除未使用的Docker镜像..."
# 删除未使用的Docker镜像
docker image prune -a -f
#docker rmi $(docker images -q)
echo "未使用的Docker镜像已删除."
# 退出循环,因为一次清理应该足以释放空间
break
fi
done
设置定时任务
crontab
设置定时任务:
shell
crontab -e
每周一早上八点 执行这个脚本:
shell
00 08 * * 1 /opt/clear_docker_images.sh > /opt/clear_docker_images.log
这是一个 crontab 格式的时间表达式,用来指定计划任务的执行时间。在这个时间表达式中:
- 第一个字段
0
表示分钟,表示在每小时的第 0 分钟执行任务。 - 第二个字段
8
表示小时,表示在每天的第 8 小时执行任务,即早上八点。 - 第三个字段
*
表示日期,表示每天都匹配。 - 第四个字段
*
表示月份,表示每月都匹配。 - 第五个字段
1
表示星期几,星期天是数字 0,星期一到星期六分别是数字 1 到 6。因此1
表示每周一。
所以,这个时间表达式 0 8 * * 1
表示在每周一的早上八点执行任务。