首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux服务器磁盘占用分析和清理

Linux服务器磁盘占用分析和清理

作者头像
做棵大树
发布2026-03-16 14:03:54
发布2026-03-16 14:03:54
1920
举报
文章被收录于专栏:代码日志代码日志

“最近发现自己服务器的磁盘占用比例升到了70%以上,为了清理和之后维护,我理了下一些 linux 运维中可以用到的常用命令。 记录下来,给之后做个备忘录,也希望能帮到大家。 ”

话不多说,直接上代码

一、问题分析与诊断

1. 查看整体磁盘使用情况

代码语言:javascript
复制
# 查看所有挂载点的磁盘使用情况
df -h

# 以更易读的方式显示,按使用率排序
df -hT | sort -k6 -rh

# 查看inode使用情况(有时文件数太多也会导致问题)
df -i

2. 定位大目录

代码语言:javascript
复制
# 查看根目录下各文件夹大小
sudo du -sh /* 2>/dev/null | sort -rh | head -20

# 深入分析特定目录
sudo du -sh /var/* 2>/dev/null | sort -rh | head -10
sudo du -sh /home/* 2>/dev/null | sort -rh | head -10
sudo du -sh /usr/* 2>/dev/null | sort -rh | head -10

3. 使用ncdu(更直观的工具)

代码语言:javascript
复制
# 安装ncdu
sudo apt-get install ncdu  # Debian/Ubuntu
sudo yum install ncdu      # CentOS/RHEL

# 使用ncdu扫描目录
sudo ncdu /

二、常见高磁盘占用原因及处理

1. 日志文件过大

代码语言:javascript
复制
# 查看日志目录大小
sudo du -sh /var/log

# 查看具体大日志文件
sudo find /var/log -type f -name "*.log" -size +100M -exec ls -lh {} \;

# 清理方法:
# a) 清空日志文件(注意:确认日志可清理)
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log

# b) 使用logrotate管理日志
sudo logrotate -f /etc/logrotate.conf

# c) 删除旧日志
sudo find /var/log -type f -name "*.log.*" -mtime +7 -delete
sudo find /var/log -type f -name "*.gz" -mtime +30 -delete

2. 未清理的软件包缓存

代码语言:javascript
复制
# Debian/Ubuntu系统
sudo apt-get clean           # 清理所有软件包缓存
sudo apt-get autoclean       # 清理旧版本软件包缓存
sudo apt-get autoremove      # 删除不需要的依赖

# CentOS/RHEL系统
sudo yum clean all           # 清理所有yum缓存
sudo dnf clean all           # Fedora/CentOS 8+

# 查看缓存大小
sudo du -sh /var/cache/apt/archives  # Debian/Ubuntu
sudo du -sh /var/cache/yum           # CentOS/RHEL

3. 系统临时文件

代码语言:javascript
复制
# 清理临时文件
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*

# 注意:有些程序可能正在使用临时文件,建议重启后清理

4. Docker占用(如果使用)

代码语言:javascript
复制
# 查看Docker磁盘使用
docker system df

# 清理无用的Docker资源
docker system prune -a

# 清理特定资源
docker volume prune    # 清理未使用的卷
docker image prune     # 清理未使用的镜像

5. 用户文件和历史记录

代码语言:javascript
复制
# 清理用户缓存
rm -rf ~/.cache/*

# 清理下载目录
rm -rf ~/Downloads/*

# 查看隐藏文件夹大小
du -sh ~/.* | sort -rh | head -10

三、深度分析与定位

1. 查找大文件

代码语言:javascript
复制
# 查找大于100MB的文件
sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh

# 查找最近修改的大文件
sudo find / -type f -size +50M -mtime -7 -exec ls -lh {} \; 2>/dev/null

# 查找空文件和空目录
sudo find / -type f -empty
sudo find / -type d -empty

2. 检查系统备份和快照

代码语言:javascript
复制
# 检查是否有系统备份
sudo find / -type f -name "*backup*" -size +100M 2>/dev/null
sudo find / -type f -name "*.tar" -o -name "*.tar.gz" -o -name "*.tgz" -size +100M 2>/dev/null

3. 检查邮件系统(如果启用)

代码语言:javascript
复制
# 查看邮件队列大小
sudo du -sh /var/spool/mail
sudo du -sh /var/mail

四、自动化维护脚本

创建清理脚本 /usr/local/bin/disk-cleanup.sh

代码语言:javascript
复制
#!/bin/bash

echo "=== 磁盘清理开始 ==="
echo "当前磁盘使用情况:"
df -h /

echo -e "\n=== 清理APT缓存 ==="
apt-get clean
apt-get autoclean

echo -e "\n=== 清理日志文件 ==="
find /var/log -type f -name "*.log.*" -mtime +7 -delete
find /var/log -type f -name "*.gz" -mtime +30 -delete

echo -e "\n=== 清理临时文件 ==="
rm -rf /tmp/* 2>/dev/null

echo -e "\n=== 清理后的磁盘情况 ==="
df -h /

echo "=== 磁盘清理完成 ==="

给脚本执行权限:

代码语言:javascript
复制
sudo chmod +x /usr/local/bin/disk-cleanup.sh

五、预防措施

1. 设置日志轮转

编辑 /etc/logrotate.conf

代码语言:javascript
复制
# 设置日志保留周期
weekly
rotate 4
create
compress

2. 监控磁盘使用

添加定时任务(crontab):

代码语言:javascript
复制
# 每天检查磁盘使用率
0 2 * * * /usr/local/bin/disk-cleanup.sh >> /var/log/disk-cleanup.log

# 每周发送磁盘使用报告
0 9 * * 1 df -h | mail -s "Weekly Disk Usage Report" admin@example.com

3. 使用监控工具

代码语言:javascript
复制
# 安装监控工具
sudo apt-get install htop iotop iftop  # Debian/Ubuntu
sudo yum install htop iotop iftop      # CentOS/RHEL

# 实时监控
sudo iotop      # 查看磁盘IO
sudo htop       # 查看进程资源使用

六、安全注意事项

  1. 谨慎删除:删除前确认文件是否重要
  2. 备份重要数据:操作前备份关键配置文件
  3. 使用truncate而非rm:对于日志文件,使用truncate更安全
  4. 检查隐藏进程:有些恶意软件会占用磁盘
代码语言:javascript
复制
# 检查异常进程
ps auxf | grep -E '(miner|crypto|malware)'

七、定期维护建议

  1. 每日检查
    • 使用 df -h 查看磁盘使用
    • 检查 /var/log 目录大小
  2. 每周维护
    • 清理软件包缓存
    • 检查大文件
    • 更新系统
  3. 每月深度清理
    • 审核用户文件
    • 清理旧备份
    • 检查日志轮转配置

建议建立定期维护计划,预防磁盘空间问题再次发生。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 做棵大树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题分析与诊断
    • 1. 查看整体磁盘使用情况
    • 2. 定位大目录
    • 3. 使用ncdu(更直观的工具)
  • 二、常见高磁盘占用原因及处理
    • 1. 日志文件过大
    • 2. 未清理的软件包缓存
    • 3. 系统临时文件
    • 4. Docker占用(如果使用)
    • 5. 用户文件和历史记录
  • 三、深度分析与定位
    • 1. 查找大文件
    • 2. 检查系统备份和快照
    • 3. 检查邮件系统(如果启用)
  • 四、自动化维护脚本
  • 五、预防措施
    • 1. 设置日志轮转
    • 2. 监控磁盘使用
    • 3. 使用监控工具
  • 六、安全注意事项
  • 七、定期维护建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档