首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >先体检,再动刀:一台旧笔记本的 Arch Linux 清理优化实战

先体检,再动刀:一台旧笔记本的 Arch Linux 清理优化实战

原创
作者头像
用户12816612
修改于 2026-10-19 18:50:17
修改于 2026-10-19 18:50:17
1110
举报

先体检,再动刀:一台旧笔记本的 Arch Linux 清理优化实战

笔记本越用越慢、磁盘逼近红线,我没有直接动手删文件,而是先做了一次全身体检——把问题分级、列清单、逐项确认,最后清理出数 GB 空间。 本文记录完整过程,包括一个差点酿成事故的坑。

写在前面

这台笔记本跟了我五年多,最近的状态是:开几个应用就开始换页,磁盘可用空间只剩个位数 GB,风扇动不动就狂转。

按照直觉,这时候该做的事是「清理垃圾」。但真正做下来,我发现比清理更重要的是先搞清楚现状——哪些空间能回收、哪些配置漂移了、哪些操作有风险。所以整个工作分成两步:先体检(只读),再动刀(分级执行)。

一、体检:一台机器该关心什么

我用一个只读脚本做全机检查(只采集信息,不修改任何文件),覆盖八个维度:

代码语言:bash
复制
# 思路示例:每个维度一个独立采集函数,互不影响
check_kernel_consistency   # 运行内核 vs 已安装内核 / boot 镜像
check_memory               # 内存 / zram swap / Committed_AS 超售
check_disk                 # 各分区使用率 + 大目录 TOP N
check_reclaimable          # 各类缓存与回收站
check_config_drift         # .pacnew / .pacsave 未合并项
check_mirror_freshness     # 镜像源更新日期
check_security_baseline    # 防火墙 / SecureBoot
check_hardware             # 温度 / 风扇 / 电池循环 / 网络延迟

体检结果(按优先级分级)

级别

问题

实测数据

P1

内存紧张,zram swap 即将打满

zram 已用 5.5G/8G,可用内存仅 6.6G

P1

I/O 压力持续偏高

PSI io some 3.7%

P2

配置漂移:9 个 .pacnew 未合并

含 mkinitcpio.conf

P3

镜像源 6 个月未更新

列表停在 4 月

P3

未启用任何防火墙服务

工具齐全、配置在位,就是没启动

P3

可回收空间约 2.0G

回收站 157M / npm 缓存 285M / 浏览器缓存 1.1G / 工作区缓存 293M

健康项也一并记下来:运行内核与已安装内核一致(升级后重启过)、电池健康度 80%(244 次循环)、温度正常、网络延迟 1.4ms、SSD TRIM 定时任务已启用。

体会:体检报告本身就有价值。它把「感觉电脑变慢了」变成一张带数字的分级表,后面每一个动作都有了依据,也能对别人交代清楚。

一个环境坑:脚本里别裸调 sudo

体检脚本默认会自动用 sudo 补特权项。但在隔离环境(容器/沙箱)里 sudo 不可用,脚本会卡在密码提示上不动,看起来像死机。改成:特权项单独标记、手动分块采集,脚本本身不内嵌 sudo。

顺带记一笔隔离环境的「常态」:包管理器数据库、系统日志、系统总线在沙箱里读不到,不是故障,别误判;系统级改动(防火墙、initramfs、镜像列表)一律出脚本交给本人执行。

二、动刀:从「能删」到「该删」

清理分四类,风险从低到高。

2.1 用户级缓存(零风险,直接清)

先找出大头:

代码语言:bash
复制
du -sh ~/.cache/* 2>/dev/null | sort -rh | head -20

这台机器上:

目录

清理前

清理后

npm 缓存

285M

52K

浏览器缓存

1.1G

0

常驻工具缓存(截图发送 / 语音 / OCR 等)

约 293M

0

都是几条命令的事:

代码语言:bash
复制
npm cache clean --force            # 实测有效
rm -rf ~/.cache/mozilla/*          # 清浏览器缓存,不碰 profile

2.2 回收站惊魂(本次最大的坑)

清回收站前,我按惯例先盘点,结果发现 60 个条目里有 17 项是之前几次操作误移入的个人文件——自己写的分析脚本、输入法用户词库、一个 93M 的备份压缩包、一份报表模板。

如果没有「清空前先盘点」这一步,这些文件就全没了。

复盘这次有惊无险,沉淀出几条规矩:

规矩一:回收站是缓冲区,不是垃圾场。清空前必须逐条列表看过:

代码语言:bash
复制
ls -la ~/.local/share/Trash/files/

规矩二:按时间精确剔除。只清自己这次产生的条目,不碰历史遗留:

代码语言:bash
复制
find ~/.local/share/Trash -newermt "2026-10-13 15:30"

规矩三:恢复文件要检查属主。隔离环境里以 root 身份恢复的文件,属主会变成 root,需要还成本人,否则以后自己都改不动。

规矩四:跨文件系统移动报 EXDEV。改名(rename)跨分区不支持,改用「复制 + 校验 + 删源」三步走。

规矩五:断链要用 lexists 判断。os.path.exists() 对断掉的符号链接返回 False,清理时会漏;os.path.lexists() 才准。

2.3 .pacnew 合并:不看新旧,看 diff

9 个未合并的配置文件,处理策略是先存档 diff,再逐个决定,而不是无脑 mv xxx.pacnew xxx:

文件

决定

理由

两个 JSON 配置

采用 pacnew

纯上游更新,无本地定制

某内核 preset 的 .pacsave

删除

对应内核本机没装

四个 pacnew

删除,保留当前版

当前 pacman.conf 含自定义源和忽略列表,覆盖会搞坏系统

mkinitcpio.conf.pacnew

保留,待人工

HOOKS 从 udev 改为 systemd 会改变启动行为,不能拍脑袋

「新的」不等于「该用的」——你的定制比版本号重要。

2.4 镜像源刷新:先测速,再落盘

镜像列表停在 6 个月前。reflector 没装,就手动测速:对 11 个候选源下载同一个索引文件,取速度前 8 生成新列表。实测最快的是国内云厂商源(1.0 MB/s),其余多在 200–500KB/s 档。

代码语言:bash
复制
for url in $MIRRORS; do
  curl -o /dev/null --max-time 5 -s -w "%{speed_download} $url\n" \
    "$url/core/os/x86_64/core.db"
done | sort -rh | head -8

三、顺手:输入法词库精简

既然在清理,把输入法目录也看了一下——214M,其中一大半是编译产物。

做法分三层:

  1. 先查依赖,再删方案。解析主方案的配置文件,确认 5 个方案是被主方案引用的零件(反查、英文混输等),其余 11 个无任何引用,才移入备份目录。目录 214M → 151M(−63M)。
  2. 清编译产物要防「别名」。按文件名前缀删 build/ 产物,漏掉了两个别名 prism 文件;改成判断「prism 名是否出现在保留方案的文本里」,复扫确认无孤立产物。
  3. 词库更新不等于变多。上游这一版把联想长词从 36.6 万精简到 16.3 万,新增 8.5 万地名,总词条 1,897,094 → 1,729,715(−8.8%)。看到词条数下降别慌,先看变更说明。

四、效果与心法

最终战果:磁盘 148G → 142G;内存大头全部定位到具体进程;配置漂移只剩 1 项待人工确认;输入法目录 −63M;包管理器缓存(数 GB)留在系统级清理项,交还给本人执行。

沉淀几条心法:

  1. 先体检,再动刀。只读脚本出报告,问题分级,每一项都有数字依据,也能对别人交代。
  2. 不可逆操作前「三问」:备份了吗?清单列了吗?确认了吗?这次回收站能全身而退,全靠第二问。
  3. 配置文件合并不看新旧,看 diff。自定义源、忽略列表这些本地定制,比「版本更新」重要得多。
  4. 隔离环境里,「不可见」是常态。读不到系统数据库/日志/总线不是故障;系统级改动出脚本交本人执行,别硬闯。
  5. 让数据说话。镜像源要测速,清理效果要前后对比,「我觉得干净了」不算数。
  6. 「不报错但错了」最危险。删错文件不会抛异常,正则写错也不会——关键步骤靠清单和人工核对兜底。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 先体检,再动刀:一台旧笔记本的 Arch Linux 清理优化实战
    • 写在前面
    • 一、体检:一台机器该关心什么
      • 体检结果(按优先级分级)
      • 一个环境坑:脚本里别裸调 sudo
    • 二、动刀:从「能删」到「该删」
      • 2.1 用户级缓存(零风险,直接清)
      • 2.2 回收站惊魂(本次最大的坑)
      • 2.3 .pacnew 合并:不看新旧,看 diff
      • 2.4 镜像源刷新:先测速,再落盘
    • 三、顺手:输入法词库精简
    • 四、效果与心法
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档