温馨提示×

Debian回收资源的最佳实践

小樊
36
2025-12-30 03:17:54
栏目: 智能运维

Debian资源回收最佳实践

一 磁盘空间清理

  • 使用 APT 清理与去重依赖
    • 清理已下载包缓存:sudo apt clean
    • 仅清理过期包缓存:sudo apt autoclean
    • 移除不再需要的依赖:sudo apt autoremove --purge
  • 删除残留配置与孤立包
    • 列出残留配置:dpkg -l | awk ‘/^rc/ {print $2}’
    • 批量清除残留配置:sudo apt purge $(dpkg -l | awk ‘/^rc/ {print $2}’)
    • 查找并删除孤儿包:sudo apt install deborphan && sudo deborphan | xargs sudo apt-get remove --purge
  • 清理 systemd 日志
    • 先轮转:sudo journalctl --rotate
    • 按时间保留(如保留最近7天):sudo journalctl --vacuum-time=7d
    • 按大小保留(如最大100M):sudo journalctl --vacuum-size=100M
  • 清理临时文件
    • 系统临时目录:sudo rm -rf /tmp/ /var/tmp/**
    • 安全建议:在 /etc/fstabtmpfs 设置大小与限制,例如:
      tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev,size=1G 0 0
  • 清理用户与浏览器缓存
    • 当前用户缓存:rm -rf ~/.cache/ ~/.local/share/Trash/ ~/.mozilla/firefox//cache2/ ~/.cache/thumbnails/***

二 内存与内核回收

  • 内核内存回收机制
    • Linux 通过 kswapd 在内存紧张时按 LRU 等策略回收页面,必要时触发直接回收,无需手动频繁干预。
  • 调整交换倾向
    • 查看当前值:cat /proc/sys/vm/swappiness
    • 临时降低(如设为10,减少换页):sudo sysctl -w vm.swappiness=10
    • 永久生效:在 /etc/sysctl.conf 添加 vm.swappiness=10 后执行 sudo sysctl -p
  • 回收 Swap(仅在维护窗口)
    • 关闭并重新启用 Swap:sudo swapoff -a && sudo swapon -a
  • 容器环境的内存回收
    • Docker 资源回收:docker system prune -af --volumes(按需添加 –filter 精准清理)

三 日志与临时目录治理

  • 使用 logrotate 做自动轮转与压缩
    • 强制执行一次轮转:sudo logrotate -f /etc/logrotate.conf
    • 建议为高频日志(如应用、Nginx)在 /etc/logrotate.d/ 配置保留周期与压缩策略,避免无限增长。
  • 定位大日志与临时文件
    • 查看分区使用:df -h
    • 目录占用分析:sudo du -sh /var/log /tmp /var/tmp 2>/dev/null
    • 交互式定位大文件:sudo ncdu /(需安装 ncdu

四 监控与自动化

  • 资源监控与告警
    • 实时与历史:top/htop、vmstat、iostat、sar(按需安装 sysstat
    • 可视化与跨平台:sudo apt install glances && glances
  • 定期清理脚本示例(crontab 每周日凌晨 2 点)
    • 建议先备份并在测试环境验证
    • 示例:
      #!/usr/bin/env bash
      set -e
      apt clean
      apt autoclean
      apt autoremove --purge -y
      journalctl --rotate
      journalctl --vacuum-time=7d
      journalctl --vacuum-size=100M
      rm -rf /tmp/* /var/tmp/*
      [[ -x /usr/bin/ncdu ]] && ncdu -x /var/log 2>/dev/null || true
    • 加入计划任务:sudo crontab -e,添加:0 2 * * 0 /usr/local/bin/cleanup.sh

五 安全与回退建议

  • 变更前先备份关键数据与配置(如 /etc、用户主目录、数据库与证书)
  • 删除前先确认版本与依赖:如清理旧内核前,确认当前运行内核:uname -r,再移除不再需要的 linux-image-linux-headers-
  • 谨慎使用 rm -rf,优先用包管理器(apt)与专用工具(如 ncdu)定位后再清理
  • 误删恢复思路:立即停止写入,优先从备份恢复;无备份时可尝试 extundelete/TestDisk/PhotoRec 等工具(成功率依文件系统与覆盖情况而定)

0