Debian系统清理进阶技巧
一 先做一次全面体检
df -h,快速定位高占用分区。ncdu / 或 du -sh /* | sort -rh | head -20,找出“吃空间”的大户。ls /var/cache/apt/archives/、ls /var/lib/apt/lists/,评估可清理空间。uname -r、dpkg --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 包名,同时清理配置文件。sudo apt-get purge $(dpkg -l | awk '/^rc/ {print $2}')。sudo deborphan | xargs sudo apt-get remove --purge。localepurge,移除未使用的语言包,进一步回收空间。三 日志与临时文件治理
sudo journalctl --vacuum-time=7d(保留最近7天);sudo journalctl --vacuum-size=100M(限制总大小)。/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 天 的文件,通常无需手动干预。四 旧内核与固件清理
dpkg --list | grep linux-image 或 uname -r(确认当前版本)。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 "清理完成"
logrotate 或 journalctl 的保留策略,避免粗暴 rm -rf /var/log/*。/tmp 前确认无活跃会话/文件句柄;清理 APT 列表前确保不会中断正在进行的包操作。sync && echo 1 | sudo tee /proc/sys/vm/drop_caches,避免频繁执行以免影响性能。