温馨提示×

Linux清理技巧大公开:提升系统性能的秘诀

小樊
40
2025-12-09 06:20:18
栏目: 智能运维

Linux 清理与性能优化实用指南

一 快速定位空间占用

  • 查看整体磁盘使用:使用命令:df -h,快速识别接近满的分区。
  • 定位大目录/大文件:从根目录逐级排查,示例:du -sh / 2>/dev/null | sort -rh | head -n 10*;对可疑目录继续深入。
  • 检查 inode 是否耗尽:df -i,大量小文件场景常见“空间未满但无法写入”。
  • 交互式分析器:ncdu /,更直观地发现占用热点。
  • 容器与镜像场景:如存在 Docker,可用 docker system prune -a 清理无用镜像/容器/网络(谨慎,会删除未使用资源)。

二 安全清理与优化清单

  • 包管理器缓存
    • Debian/Ubuntu:sudo apt-get clean && sudo apt-get autoclean
    • RHEL/CentOS:sudo yum clean all
    • Fedora:sudo dnf clean all
  • 删除无用依赖与旧软件
    • Debian/Ubuntu:sudo apt-get autoremove --purge
    • RHEL/CentOS:sudo yum remove ;如需自动移除无用依赖:sudo yum autoremove
  • 临时文件
    • 系统临时目录:sudo rm -rf /tmp/;sudo rm -rf /var/tmp/(确保无关键进程在使用)
  • 日志与 journald
    • 按时间保留:sudo journalctl --vacuum-time=3d
    • 按大小保留:sudo journalctl --vacuum-size=200M
    • 配合日志轮转:确保 /etc/logrotate.conf/etc/logrotate.d/ 配置合理,避免日志无限增长
  • 旧内核(Debian/Ubuntu)
    • 查看:dpkg --list | grep linux-image
    • 保留最新 2 个并删除其余:sudo apt-get purge $(dpkg -l | grep linux-image | awk ‘{print $2}’ | tail -n +3)
  • 用户缓存与下载目录
    • 清理用户缓存:rm -rf ~/.cache/;rm -rf ~/Downloads/(按需)
  • 图形化工具(可选)
    • BleachBit(系统清理)、Baobab(磁盘使用分析)

三 内存与内核参数优化

  • 理解机制:Linux 会利用空闲内存做 页面缓存(Page Cache) 提升 I/O,手动清理缓存通常仅用于定位或应急,不建议作为日常操作。
  • 手动清理缓存(应急)
    • 同步后清理:sync && echo 3 | sudo tee /proc/sys/vm/drop_caches(分别可 echo 1/2 清理页面缓存/目录项与 inode 缓存)
  • 交换与回收策略
    • 降低换入倾向:sudo sysctl -w vm.swappiness=10(默认通常为 60,视负载与内存大小调整)
    • 脏页回写阈值:结合负载调节 vm.dirty_ratio / vm.dirty_background_ratio,避免一次性大回写抖动
  • 监控与诊断
    • 工具:free -m、top、vmstat、sar、slabtop、/proc/meminfo;关注 buffers/cache、slab、active/inactive 等指标区分缓存与应用占用
  • 进阶(面向特定负载)
    • HugePages(大页)、NUMA 亲和、应用层内存泄漏排查(如 Valgrind

四 自动化与预防

  • 定时清理脚本示例(/root/cleanup.sh)
    • 示例内容:
      • journald 保留最近 3 天:journalctl --vacuum-time=3d
      • APT 缓存清理:apt-get clean && apt-get autoclean
      • 临时文件:rm -rf /tmp/ /var/tmp/**
    • 赋权与定时:chmod +x /root/cleanup.sh;在 crontab -e 中添加(如每天 03:00):0 3 * * * /root/cleanup.sh
  • 日志与监控预防
    • 确保 logrotate 正确配置并按日/周轮转压缩
    • 磁盘阈值告警脚本(示例阈值 90%):
      • 阈值检测与告警:CURRENT=$(df / | tail -1 | awk ‘{print $5}’ | sed ‘s/%//’); if [ “$CURRENT” -gt 90 ]; then echo “Disk space alert on $(hostname)” | mail -s “Disk Alert” admin@example.com; fi
  • 容器场景预防
    • 限制容器日志大小:docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3
  • 虚拟机/云盘场景
    • 若支持 LVM,空间不足可在线扩容后调整文件系统:lvextend -L +10G /dev/mapper/vg-root && resize2fs /dev/mapper/vg-root(按实际 LV 与文件系统执行)

五 操作注意事项

  • 备份关键数据与配置,优先在测试环境验证脚本与命令。
  • 谨慎操作 /var/log/journald,避免误删正在写入的日志导致故障排查困难。
  • 清理 /tmp 前确认无关键进程占用;必要时可先停止相关服务。
  • 生产环境不建议频繁手动 drop_caches,优先优化应用与 I/O 路径。
  • 删除旧内核前务必确认当前运行内核不在删除列表中,保留至少 1–2 个可回退版本。

0