温馨提示×

如何利用Ubuntu命令行进行系统清理

小樊
34
2025-11-23 16:41:06
栏目: 智能运维

Ubuntu 命令行系统清理实操指南

一 准备与定位大文件

  • 查看整体磁盘占用:df -h
  • 查看目录占用:sudo du -sh /var/cache/apt
  • 找出占用最大的若干文件:sudo find / -type f -exec du -h {} \; 2>/dev/null | sort -hr | head -20
  • 建议先完成备份,再进行删除操作,避免误删重要数据。

二 APT 与包管理清理

  • 清理软件包缓存:
    • 删除已下载的包文件:sudo apt clean
    • 仅清理旧版本包:sudo apt autoclean
  • 移除不再需要的依赖与旧内核:
    • 自动移除无用依赖:sudo apt autoremove --purge
    • 清理残留配置(状态为 rc 的包):dpkg -l | grep ^rc | awk '{print $2}' | xargs sudo dpkg -P
  • 清理孤立包(无被依赖的库/包):
    • 安装工具:sudo apt install deborphan
    • 查找并删除:sudo deborphan | xargs sudo apt-get -y remove --purge
  • 可选:使用 aptitude 进行更激进的清理:sudo aptitude clean && sudo aptitude autoclean

三 日志 临时文件 与缩略图

  • 系统日志(journald):
    • 按大小限制:sudo journalctl --vacuum-size=100M
    • 按时间限制:sudo journalctl --vacuum-time=3d
  • 传统日志文件:
    • 查看大小:du -sh /var/log/*
    • 清空日志内容(保留文件):sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
  • 临时文件:
    • 清理系统临时目录:sudo rm -rf /tmp/*
    • 定时清理工具(如已安装):sudo tmpwatch --empty /tmp
  • 缩略图缓存:rm -rf ~/.cache/thumbnails/*
  • 浏览器缓存(示例路径,按实际调整):
    • Firefox:rm -rf ~/.cache/mozilla/firefox/*
    • Chrome:rm -rf ~/.cache/google-chrome/*
  • 可选:清理 core 文件(排查无果的大文件):find / -name core -print -exec rm -f {} \; 2>/dev/null

四 旧内核 与 Snap Flatpak 清理

  • 旧内核(务必保留当前正在使用的内核):
    • 查看当前内核:uname -r
    • 列出已安装内核:dpkg --list | grep linux-image
    • 删除指定旧版本(示例):sudo apt purge linux-image-<version>-generic
    • 安全做法:只删除比 uname -r 更旧的版本,避免误删正在使用的内核。
  • Snap 旧版本回收(每应用仅保留当前启用修订):
    • 查看所有修订:snap list --all
    • 删除禁用修订(示例):sudo snap remove --revision=<rev> <snap-name>
  • Flatpak 未使用运行时与包:
    • 清理未使用:flatpak uninstall --unused
    • 修复异常:flatpak repair

五 一键脚本 与 注意事项

  • 一键清理脚本(示例,按需启用/调整):
    #!/usr/bin/env bash
    set -e
    echo "==> 清理 APT 缓存"
    sudo apt clean && sudo apt autoclean
    
    echo "==> 移除无用依赖与旧配置"
    sudo apt autoremove --purge
    dpkg -l | grep ^rc | awk '{print $2}' | xargs -r sudo dpkg -P
    
    echo "==> 清理日志"
    sudo journalctl --vacuum-size=100M
    sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
    
    echo "==> 清理临时与缩略图"
    sudo rm -rf /tmp/*
    rm -rf ~/.cache/thumbnails/*
    
    echo "==> 清理浏览器缓存(示例路径)"
    rm -rf ~/.cache/mozilla/firefox/*
    rm -rf ~/.cache/google-chrome/*
    
    echo "==> 清理旧内核(保留当前)"
    CURRENT=$(uname -r)
    for img in $(dpkg --list | grep linux-image | awk '{print $2}' | grep -v "$CURRENT"); do
      sudo apt purge -y "$img" || true
    done
    
    echo "==> 清理 Snap 旧修订"
    snap list --all | awk '/disabled/{print $1, $3}' | while read snap rev; do
      sudo snap remove --revision="$rev" "$snap" || true
    done
    
    echo "==> 清理 Flatpak 未使用"
    flatpak uninstall --unused || true
    flatpak repair || true
    
    echo "==> 完成,建议重启系统"
    
  • 注意事项:
    • 全程使用具有 sudo 权限的账户,操作前做好 备份
    • 删除 /tmp 前确认无关键任务在使用临时文件;清理日志时优先用 journalctl --vacuum-* 而非粗暴删除整个目录。
    • 删除旧内核时务必保留 当前运行内核,避免系统无法启动。
    • 谨慎使用 rm -rf,必要时先 lsdu 确认目标路径与内容。

0