月薪5千如何3年存20万

操作前务必谨慎!仔细核对步骤,确认环境安全,备份重要数据,明确操作目的与潜在风险,必要时寻求专业指导,确认无误后再执行,避免不可逆损失。

当你的 Linux 系统突然弹出“磁盘空间不足”的警告,或者执行命令时遇到 No space left on device 的错误,意味着你需要立即采取行动清理磁盘了,磁盘空间耗尽不仅会导致程序崩溃、数据无法保存,甚至可能让系统变得不稳定,别担心,本文将手把手教你如何诊断问题根源、安全有效地清理空间,并预防未来再次发生。

  • 理解你在删除什么: 随意删除系统文件可能导致系统崩溃、程序无法运行或数据永久丢失。
  • 备份关键数据: 在进行大规模删除操作前,强烈建议备份重要文件和数据。
  • 使用 sudo 需谨慎: 很多清理命令需要管理员权限 (sudo),确保你清楚命令的作用。
  • 优先清理用户数据: /home 目录下的用户文件(如下载、缓存、旧项目)是最安全的清理起点。
  • 避免直接删除 /tmp/dev 这些目录通常由系统管理,直接删除可能引发问题。

第一步:精准诊断 – 找出空间被谁吃掉了

盲目删除效率低且危险,我们需要精确找出是哪个分区(或挂载点)满了,以及是哪些文件或目录占用了大量空间。

  1. 查看整体磁盘使用情况 (df):

    df -h
    • -h 选项让结果以人类可读的单位(G, M)显示。
    • 重点关注 Use% 列,找出使用率接近或达到 100% 的分区(如 , /home, /var)。
    • 记下满的分区对应的 Mounted on(挂载点), 或 /var
  2. 深入定位大文件/目录 (du / ncdu):
    知道哪个分区满后,需要深入该分区找出“罪魁祸首”。

    • 使用 du (disk usage):

      sudo du -h --max-depth=1 /path/to/full/mountpoint | sort -h
      • /path/to/full/mountpoint 替换为上一步找到的满的挂载点(如 , /var, /home)。
      • -h:人类可读格式。
      • --max-depth=1:只显示指定目录下一级子目录的大小。
      • | sort -h:将结果按人类可读的大小排序(从小到大)。注意看最后几行,最大的目录会排在最后。
      • 找到最大的目录后,可以 cd 进入它,再次运行 sudo du -h --max-depth=1 | sort -h 来层层深入,直到定位到大文件或特定的大目录。
    • 推荐使用 ncdu (NCurses Disk Usage):
      ncdu 是一个交互式、更直观的工具,强烈推荐安装使用:

      # 安装 ncdu (根据发行版选择命令)
      sudo apt install ncdu    # Debian/Ubuntu
      sudo yum install ncdu    # CentOS/RHEL
      sudo dnf install ncdu    # Fedora

      使用:

      sudo ncdu /path/to/full/mountpoint
      • 它会扫描目录并显示一个带进度条的可导航界面。
      • 使用方向键浏览,按 Enter 进入子目录,按 d 删除选中的文件或目录(非常小心!),按 查看帮助。
      • 它能快速直观地展示目录大小占比,是定位空间占用者的利器。

第二步:针对性清理 – 安全有效地释放空间

根据 dfdu/ncdu 定位的结果,针对性地清理:

  1. 清理用户空间 (/home/用户名):

    • 浏览器缓存: Chrome, Firefox 等浏览器的缓存文件可能非常大,通常在 ~/.cache (~/.cache/mozilla/firefox/, ~/.cache/google-chrome/) 目录下,可以在浏览器设置里清理,或手动删除 ~/.cache 下的内容(注意有些应用缓存也在这里)。
    • 下载目录 (~/Downloads): 检查并删除不再需要的大文件。
    • 旧文档、媒体文件: 音乐、视频、图片、旧项目归档等。
    • 应用缓存和临时文件: 查看 ~/.local/share/~/.config/ 下特定应用的缓存目录(谨慎操作,删除前了解作用)。
    • Trash (回收站): 图形界面清空回收站,或命令行清空 ~/.local/share/Trash/files/
  2. 清理系统日志 (/var/log):
    系统和服务日志会不断增长,是 /var 分区满的常见原因。

    • 查看日志大小: sudo ncdu /var/logsudo du -sh /var/log/* | sort -h
    • 使用 logrotate: Linux 通常有 logrotate 服务自动管理日志轮转和删除旧日志,检查其配置 (/etc/logrotate.conf/etc/logrotate.d/) 确保正常工作,可以手动运行 sudo logrotate -f /etc/logrotate.conf 强制立即轮转。
    • 清理特定日志文件 (谨慎!):
      • 可以安全清理 *.gz 文件(这是 logrotate 压缩的旧日志)。
      • 对于巨大的当前日志文件 (如 syslog, messages, kern.log),最佳实践是清空内容而不是删除文件本身,因为有些服务需要文件存在:
        sudo sh -c 'echo > /var/log/syslog'  # 清空 syslog 文件内容
      • 或者使用 truncate 命令:
        sudo truncate -s 0 /var/log/messages  # 将 messages 文件大小截断为 0
      • 绝对避免直接 rm 重要的当前日志文件! 这可能导致记录日志的服务出错。
    • 清理 journald 日志 (Systemd 系统):
      journalctl --disk-usage              # 查看日志占用的磁盘空间
      sudo journalctl --vacuum-size=100M   # 将日志总大小限制到 100M,删除旧日志
      sudo journalctl --vacuum-time=2weeks # 删除超过 2 周的日志

      也可以编辑 /etc/systemd/journald.conf 中的 SystemMaxUse=SystemMaxFileSize= 来永久限制大小。

  3. 清理包管理器缓存:
    包管理器 (apt, yum/dnf, pacman) 会下载并缓存安装包,长期积累会占用不少空间。

    • APT (Debian/Ubuntu):
      sudo apt clean          # 删除 /var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/ 中所有 .deb 包
      sudo apt autoclean      # 删除已卸载软件的旧版本 .deb 包
    • YUM (CentOS/RHEL 7):
      sudo yum clean all      # 清理所有缓存(元数据和包文件)
    • DNF (Fedora/CentOS/RHEL 8+):
      sudo dnf clean all      # 清理所有缓存
    • Pacman (Arch/Manjaro):
      sudo pacman -Sc        # 删除缓存中未安装的包和旧版本(保留当前安装版本的缓存)
      sudo pacman -Scc       # 删除缓存中所有包文件(更彻底,但下次安装需重新下载)
  4. 清理临时文件 (/tmp/var/tmp):

    • 系统重启通常会清空 /tmp
    • /var/tmp 设计用于在重启后保留的临时文件,但也可能积累垃圾。
    • 安全清理: 可以删除其中明显是临时文件且长时间未修改(如超过 7 天)的文件:
      sudo find /tmp -type f -atime +7 -delete  # 删除 /tmp 下超过 7 天未访问的文件
      sudo find /var/tmp -type f -atime +14 -delete # 删除 /var/tmp 下超过 14 天未访问的文件
      • 谨慎使用 -delete 建议先运行不带 -deletefind 命令查看会匹配哪些文件,确认安全后再执行删除。
        sudo find /var/tmp -type f -atime +14  # 先列出,确认无误
        sudo find /var/tmp -type f -atime +14 -delete # 再删除
  5. 查找并删除核心转储文件 (Core Dumps):
    程序崩溃时可能生成很大的核心转储文件,通常位于 /var/lib/systemd/coredump/ 或应用程序的当前目录(如 或用户主目录),查找并删除不再需要的:

    sudo find / -name 'core.*' -size +100M -exec ls -lh {} \;  # 查找大于 100M 的 core 文件并列出
    sudo find / -name 'core.*' -size +100M -delete             # 找到后删除 (谨慎!确认位置)
  6. 清理未使用的 Snap 或 Flatpak 包 (如果使用):

    • Snap:
      snap list --all | grep disabled  # 查看已禁用(旧版本)的 snap
      sudo snap remove --purge <package-name>@<revision>  # 清除指定版本的 snap
    • Flatpak:
      flatpak uninstall --unused      # 卸载未使用的运行时和扩展
  7. 查找并删除重复文件 (可选):
    使用工具如 fdupesrmlint 可以查找并帮助删除重复文件,释放空间。

第三步:预防胜于治疗 – 建立长效机制

清理之后,采取措施防止空间再次耗尽:

  1. 设置磁盘空间监控:

    • 使用 df -h 定期手动检查。
    • 配置监控系统(如 Nagios, Zabbix, Prometheus + Grafana)或简单的 cron 任务,在空间使用率达到阈值(如 80%)时发送邮件或告警。
    • 使用 ncdu 定期扫描关键目录。
  2. 配置合理的日志轮转 (logrotate):
    检查并优化 /etc/logrotate.conf/etc/logrotate.d/ 下的配置文件,确保日志文件按大小或时间轮转,并保留适当数量的旧日志(如保留 4 周或 4 个轮转文件),对于特别活跃的日志(如应用日志),可以单独配置更激进的轮转策略。

  3. 定期清理包缓存:
    可以将 apt clean / dnf clean all / pacman -Sc 等命令加入 cron 计划任务,每周或每月自动执行一次。

  4. 分离关键目录到独立分区:
    在安装系统或之后调整分区时,考虑将 /home, /var, /tmp 甚至 /var/log 挂载到独立的磁盘分区,这样即使某个分区(如 /var/log)满了,也不会导致根 分区崩溃影响整个系统。

  5. 培养良好习惯:

    • 及时清理下载目录和回收站。
    • 定期归档或删除不再需要的项目文件和大媒体文件。
    • 了解常用应用缓存的位置,适时清理。

处理 Linux 磁盘空间满的问题,关键在于精准诊断df, du, ncdu)和安全清理,优先从用户数据(/home)和可再生的缓存(包缓存、浏览器缓存)入手,谨慎处理系统日志和临时文件,建立监控和自动化清理机制(logrotate, cron)是防止问题复发的根本,操作前务必确认目标备份重要数据,对 sudorm 命令保持敬畏之心,通过系统性的方法,你可以高效、安全地释放空间,保持 Linux 系统健康稳定运行。

引用与进一步学习:

  • df 命令手册: man df (终端输入)
  • du 命令手册: man du (终端输入)
  • ncdu 官网: https://dev.yorhel.nl/ncdu
  • logrotate 手册: man logrotate (终端输入) 或 https://linux.die.net/man/8/logrotate
  • journalctl 手册: man journalctl (终端输入)
  • Linux Filesystem Hierarchy Standard (FHS): https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html (了解标准目录用途)
  • 各发行版官方文档: (如 Ubuntu, CentOS, Arch Wiki) 通常有详细的存储管理和清理指南。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9049.html

(0)
酷番叔酷番叔
上一篇 6小时前
下一篇 5小时前

相关推荐

  • Debian/Ubuntu更新卡住怎么办?

    准备工作(所有方法通用)更新系统终端执行:sudo apt update && sudo apt upgrade -y # Debian/Ubuntusudo dnf update -y # Fedora/RHEL安装依赖sudo apt install -y build-essential l……

    3天前
    600
  • Linux休眠唤醒失败?解决方法在此

    Linux休眠的两种主要模式挂起到内存(Suspend-to-RAM)状态:系统暂停运行,数据保存在内存,功耗极低,唤醒方式:按电源键、键盘或鼠标(需硬件支持),开合笔记本盖子(默认触发唤醒),网络唤醒(需预先启用Wake-on-LAN),挂起到硬盘(Suspend-to-Disk / Hibernate)状态……

    2025年6月18日
    1900
  • 键盘失灵?如何查看当前驱动模块

    在Linux系统中,当键盘出现无响应、按键错乱或驱动异常时,重启键盘驱动是常见的解决方法,以下是五种详细操作方案,按风险从低到高排序,请根据实际情况选择:重新加载键盘驱动模块(推荐)适用于大多数情况,通过卸载并重载内核模块实现:# 2. 卸载模块(需root权限)sudo modprobe -r usbhid……

    2025年7月2日
    1400
  • Linux安装软件有哪些常用方法?

    准备工作确认系统信息 uname -m # 查看架构(x86_64/ARM)lsb_release -a # 查看发行版(Ubuntu/CentOS等)更新系统安装前务必更新软件源和系统组件:sudo apt update && sudo apt upgrade # Debian/Ubuntus……

    2025年6月27日
    1700
  • 你的终端拖慢工作效率了?

    Linux终端是开发者和管理员的核心工具,但默认界面可能单调且低效,通过个性化定制,不仅能提升视觉体验,还能优化工作效率,本文将详细讲解如何从多个维度改造Linux终端界面,涵盖工具更换、主题配置、提示符优化等实用技巧,所有步骤均经过测试(基于Ubuntu 22.04和Bash/Zsh),确保安全可靠,终端模拟……

    2025年6月14日
    2100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信