centos7云主机磁盘清理过程纪要

云主机总磁盘大小为120G,在阿里云控制台配置了磁盘使用达90%告警

1. 收到告警短信

image
 
 

2. 当前磁盘占用情况

df -h | grep dev
已达到 89%

image

 
 

3. 开始排查

3-1. 查看哪个目录占用最大

du -sh /*  或者  du -sh /* | sort -h
发现 /www 目录占用 69G

image

 
 

3-2. 查看 /www

du -sh /www/*
/www/wwwlogs 占用16G
/www/wwwroot 占用21G
/www/server 占用31G

image

 
 

3-3. 排查 /www/server

du -sh /www/server/* | sort -h
/www/server/nginx 占用19G

image

du -sh /www/server/nginx/* 2>/dev/null | sort -h
/www/server/nginx/logs 占用18G

image
 
 

3-4. 发现是 /www/server/nginx/logs/access.log 占用 18G

使用此命令只删除日志,不删除文件,nginx可正常写入日志

清理
> /www/server/nginx/logs/access.log

image

 
 

3-5. 同样的方式找出其他目录占用大的文件

清理
> /www/wwwlogs/java/springboot/xxx.log
rm -f /root/logs/rocketmqlogs/rocketmq_client.log.[0-9]*
> /root/logs/rocketmqlogs/rocketmq_client.log

 
 

4. 清理完后查看磁盘占用

df -h | grep dev
只占用 52%了

image
 
 

5. 根据上面的操作编写清理脚本 cleanup_disk.sh

下次再有告警直接执行清理脚本即可

#!/bin/bash
# cleanup_disk.sh
# 安全清理云主机日志和缓存
# 执行前请确保你是 root 用户

echo "=== 开始磁盘清理 $(date) ==="

# --- 1. 清理 Nginx 日志 ---
NGINX_LOG_DIR="/www/server/nginx/logs"
if [ -d "$NGINX_LOG_DIR" ]; then
    echo "清理 Nginx 日志..."
    for f in "$NGINX_LOG_DIR"/*.log; do
        [ -f "$f" ] && > "$f"
    done
fi

# --- 2. 清理 Spring Boot 日志 ---
SPRING_LOG_DIR="/www/wwwlogs/java/springboot"
if [ -d "$SPRING_LOG_DIR" ]; then
    echo "清理 Spring Boot 日志..."
    for f in "$SPRING_LOG_DIR"/*.log; do
        [ -f "$f" ] && > "$f"
    done
fi

# --- 3. 清理 RocketMQ 日志 ---
ROCKETMQ_LOG_DIR="/root/logs/rocketmqlogs"
if [ -d "$ROCKETMQ_LOG_DIR" ]; then
    echo "清理 RocketMQ 日志..."
    # 删除旧的 log.* 文件,只保留 rocketmq_client.log
    rm -f "$ROCKETMQ_LOG_DIR"/rocketmq_client.log.[0-9]*
    # 清空当前日志
    [ -f "$ROCKETMQ_LOG_DIR/rocketmq_client.log" ] && > "$ROCKETMQ_LOG_DIR/rocketmq_client.log"
fi

# --- 4. 清理 /root 下安装包 ---
echo "清理 /root 下安装包..."
rm -f /root/*.tar.gz /root/*.tar.bz2 

# --- 5. 清理 yum 缓存 ---
echo "清理 yum 缓存..."
yum clean all


echo "=== 磁盘清理完成 $(date) ==="
df -h

posted @ 2025-09-13 23:24  猝死的路上  阅读(9)  评论(0)    收藏  举报