Linux服务器磁盘占用分析和清理
话不多说直接上代码一、问题分析与诊断1. 查看整体磁盘使用情况代码语言javascriptAI代码解释# 查看所有挂载点的磁盘使用情况 df -h # 以更易读的方式显示按使用率排序 df -hT | sort -k6 -rh # 查看inode使用情况有时文件数太多也会导致问题 df -i2. 定位大目录代码语言javascriptAI代码解释# 查看根目录下各文件夹大小 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 -103. 使用ncdu更直观的工具代码语言javascriptAI代码解释# 安装ncdu sudo apt-get install ncdu # Debian/Ubuntu sudo yum install ncdu # CentOS/RHEL # 使用ncdu扫描目录 sudo ncdu /二、常见高磁盘占用原因及处理1. 日志文件过大代码语言javascriptAI代码解释# 查看日志目录大小 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 -delete2. 未清理的软件包缓存代码语言javascriptAI代码解释# 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/RHEL3. 系统临时文件代码语言javascriptAI代码解释# 清理临时文件 sudo rm -rf /tmp/* sudo rm -rf /var/tmp/* # 注意有些程序可能正在使用临时文件建议重启后清理4. Docker占用如果使用代码语言javascriptAI代码解释# 查看Docker磁盘使用 docker system df # 清理无用的Docker资源 docker system prune -a # 清理特定资源 docker volume prune # 清理未使用的卷 docker image prune # 清理未使用的镜像5. 用户文件和历史记录代码语言javascriptAI代码解释# 清理用户缓存 rm -rf ~/.cache/* # 清理下载目录 rm -rf ~/Downloads/* # 查看隐藏文件夹大小 du -sh ~/.* | sort -rh | head -10三、深度分析与定位1. 查找大文件代码语言javascriptAI代码解释# 查找大于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 -empty2. 检查系统备份和快照代码语言javascriptAI代码解释# 检查是否有系统备份 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/null3. 检查邮件系统如果启用代码语言javascriptAI代码解释# 查看邮件队列大小 sudo du -sh /var/spool/mail sudo du -sh /var/mail四、自动化维护脚本创建清理脚本/usr/local/bin/disk-cleanup.sh代码语言javascriptAI代码解释#!/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 磁盘清理完成 给脚本执行权限代码语言javascriptAI代码解释sudo chmod x /usr/local/bin/disk-cleanup.sh五、预防措施1. 设置日志轮转编辑/etc/logrotate.conf代码语言javascriptAI代码解释# 设置日志保留周期 weekly rotate 4 create compress2. 监控磁盘使用添加定时任务crontab代码语言javascriptAI代码解释# 每天检查磁盘使用率 0 2 * * * /usr/local/bin/disk-cleanup.sh /var/log/disk-cleanup.log # 每周发送磁盘使用报告 0 9 * * 1 df -h | mail -s Weekly Disk Usage Report adminexample.com3. 使用监控工具代码语言javascriptAI代码解释# 安装监控工具 sudo apt-get install htop iotop iftop # Debian/Ubuntu sudo yum install htop iotop iftop # CentOS/RHEL # 实时监控 sudo iotop # 查看磁盘IO sudo htop # 查看进程资源使用六、安全注意事项谨慎删除删除前确认文件是否重要备份重要数据操作前备份关键配置文件使用truncate而非rm对于日志文件使用truncate更安全检查隐藏进程有些恶意软件会占用磁盘代码语言javascriptAI代码解释# 检查异常进程 ps auxf | grep -E (miner|crypto|malware)七、定期维护建议每日检查使用df -h查看磁盘使用检查/var/log目录大小每周维护清理软件包缓存检查大文件更新系统每月深度清理审核用户文件清理旧备份检查日志轮转配置建议建立定期维护计划预防磁盘空间问题再次发生。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2426011.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!