温馨提示×

Debian系统清理进阶技巧:让你更懂系统维护!

小樊
32
2025-11-30 12:08:47
栏目: 智能运维

Debian系统清理进阶技巧

一 先做一次全面体检

  • 查看整体磁盘占用:df -h,快速定位高占用分区。
  • 分析目录体积:ncdu /du -sh /* | sort -rh | head -20,找出“吃空间”的大户。
  • 检查包缓存与列表:ls /var/cache/apt/archives/ls /var/lib/apt/lists/,评估可清理空间。
  • 查看当前内核与占用:uname -rdpkg --list | grep linux-image,为后续旧内核清理做准备。

二 包管理与APT清理

  • 清理下载缓存:sudo apt-get clean(清空/var/cache/apt/archives/);sudo apt-get autoclean(仅删过期包)。
  • 移除无用依赖:sudo apt-get autoremove --purge,删除不再被任何软件依赖的包及其配置。
  • 彻底卸载软件:sudo apt-get purge 包名,同时清理配置文件。
  • 清理残留配置(状态为rc):sudo apt-get purge $(dpkg -l | awk '/^rc/ {print $2}')
  • 查找并删除孤立包:sudo deborphan | xargs sudo apt-get remove --purge
  • 清理本地化数据(可选):安装并使用localepurge,移除未使用的语言包,进一步回收空间。

三 日志与临时文件治理

  • 使用 systemd 日志管理:sudo journalctl --vacuum-time=7d(保留最近7天);sudo journalctl --vacuum-size=100M(限制总大小)。
  • 配置 logrotate(推荐长期方案):编辑/etc/logrotate.conf/etc/logrotate.d/*,示例:
    /var/log/syslog {
        weekly
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 0640 root adm
    }
    
    手动强制执行:sudo logrotate -f /etc/logrotate.conf
  • 清理临时文件:
    • /tmp:在 Debian 13 中常挂载为 tmpfs,重启即清空;如需手动清理,先确认无正在使用的会话或文件:sudo rm -rf /tmp/*
    • /var/tmp:自 Debian 13 起由 systemd 定时清理超过 30 天 的文件,通常无需手动干预。

四 旧内核与固件清理

  • 安全删除旧内核(保留当前正在使用的版本):
    1. 查看内核:dpkg --list | grep linux-imageuname -r(确认当前版本)。
    2. 删除旧版:sudo apt-get autoremove --purge linux-image-<旧版本号> linux-headers-<旧版本号>
  • 清理不需要的固件:sudo apt remove --purge firmware-linux firmware-linux-free firmware-linux-nonfree(仅在确认无用固件时执行)。

五 自动化与风险控制

  • 一键清理脚本(示例,按需调整与审查):
    #!/usr/bin/env bash
    set -e
    sudo apt-get update
    sudo apt-get autoremove --purge -y
    sudo apt-get clean
    sudo journalctl --vacuum-time 2weeks
    sudo logrotate -f /etc/logrotate.conf
    # 谨慎:仅在确认无会话占用时清理 /tmp
    sudo find /tmp -mindepth 1 -mtime +1 -delete 2>/dev/null || true
    echo "清理完成"
    
  • 风险提示与最佳实践:
    • 重要数据务必先备份;生产环境先在测试环境验证命令影响。
    • 删除日志优先用 logrotatejournalctl 的保留策略,避免粗暴 rm -rf /var/log/*
    • 清理 /tmp 前确认无活跃会话/文件句柄;清理 APT 列表前确保不会中断正在进行的包操作。
    • 清理页面缓存(可选,仅在特殊场景使用):sync && echo 1 | sudo tee /proc/sys/vm/drop_caches,避免频繁执行以免影响性能。

0