嘿,朋友。如果你正在盯着屏幕发愁,感觉 Pop!_OS 像只老牛一样艰难地爬坡,或者那个磁盘空间指示器已经红得刺眼,别急着重装系统。Pop 基于 Ubuntu,底层是 Debian 的稳健,加上 System76 精心打磨的 COSMIC 桌面(或者是你熟悉的 GNOME 变种),它其实非常强壮。卡顿和空间不足,90% 的情况不是硬件坏了,而是“垃圾”堆积或者配置没调对。
咱们今天不聊那些枯燥的命令行参数,我把这几年折腾 Linux 运维攒下的干货,掰开了揉碎了讲给你听。这就好比给你的电脑做一次大扫除,顺便换个更顺滑的引擎。
先诊断,再下药:为什么它会卡?
在你打开终端敲任何 rm 命令之前,咱们得先看看“病人”到底哪里不舒服。很多时候,你以为内存满了,其实可能是显存爆了;你以为 CPU 卡,其实是磁盘 I/O 在哭。
我习惯用 htop 或者 btop 这两个可视化工具,比 top 漂亮且信息丰富。如果你还没装,先按 Ctrl+Alt+T 打开终端:
sudo apt update
sudo apt install btop -y
btop
启动 btop 后,你会看到几个关键指标:
- CPU:有没有某个单核跑到 100%?如果是,那可能是某个进程在死循环。
- Mem:内存是不是快被吃光了?Linux 有一种机制叫“缓存内存”,看起来占用很高,但其实是系统为了加速文件读取而做的善意缓存,这部分内存随时可以被释放给应用。所以,不要看到内存占用高就慌。
- Net:有没有后台程序在偷偷上传数据?比如同步软件或者更新进程。
- Disks:这是重点。看看
/home分区是不是红了。
还有一个神器是 ssd 或者 baloo( KDE 用户注意,Pop 默认不用 baloo,但有些软件会引入类似的元数据索引服务)。Pop 用户最常遇到的“隐形杀手”往往是 Tracker(GNOME 的文件索引服务)或者 dconf 数据库碎片化。
清理缓存:让内存“活”过来
Linux 的内存管理哲学是“空闲的内存就是浪费的内存”,所以它会尽可能用内存做缓存。当你打开一个大文件,系统会把它的大部分读入内存缓存。当你关闭文件,这些数据并不会立刻消失,而是等着下次再用。
如果你觉得内存真的不够用,想要强制释放这部分“页面缓存、dentries 和 inodes”,可以用下面这个命令。请注意,这不会删除你任何打开的文件,只是告诉内核:“嘿,我不需要这些缓存了,赶紧吐出来给应用程序用。”
sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
为了让你更明白这行代码在干什么,咱们拆解一下:
sync:先把内存中还没写入磁盘的脏数据(dirty pages)强制刷到硬盘里。这步很重要,不然直接清缓存可能会丢数据。echo 3:这是写入/proc/sys/vm/drop_caches的值。1:只释放页缓存。2:只释放 dentries(目录项)和 inodes(文件索引节点)。3:释放上面两者。
sudo sh -c '...':因为写入/proc需要 root 权限,直接写可能因为权限问题失败,所以用这个方式来包裹。
但是,老哥,我要给你泼点冷水。 如果你刚清完,过几分钟内存又占满了,别焦虑,那是正常的。Linux 就是这样。如果你频繁地手动清理缓存,反而会降低系统性能,因为每次都要重新从慢速的磁盘里读数据进内存。除非你遇到了真实的 OOM(内存溢出)或者应用因为内存不足被杀,否则不要把它当成日常routine。
真正解决卡顿的内存释放,是找到那些吃内存的“巨无霸”进程。在 Pop 上,Chrome 标签开多了必卡,你可以试试用 ps aux --sort=-%mem | head -n 10 看看谁是内存大户,然后果断关掉那些不看浏览器的标签页。
磁盘空间清理:把家打扫干净
Pop 系统装久了,/var 和/home 里会堆积各种“尸体”。咱们一步步来,安全第一。
1. APT 包管理器的“尸骸”
每次你 apt upgrade 或者安装软件时,下载的安装包会保存在 /var/cache/apt/archives/。日积月累,这里可能有几个 G 的旧版本 .deb 包。
# 清理已下载的包文件
sudo apt clean
# 或者只清理那些不再需要的旧版本包(更温和)
sudo apt autoclean
# 清理系统不再需要的依赖包
sudo apt autoremove
apt clean 是清空所有缓存,apt autoclean 是只清理过期的。一般推荐用 clean,因为你反正也不需要安装旧版本的软件了。autoremove 则是清理那些你之前安装某个软件时顺带装的依赖,现在主软件删了,依赖没删的情况。
2. 日志文件:被忽视的存储黑洞
journalctl 记录的日志有时候会非常庞大,特别是如果你的系统经常休眠唤醒,或者某个服务频繁报错重启,日志文件会迅速膨胀。
你可以先看看日志占了多大:
journalctl --disk-usage
如果显示几百 MB 甚至几 GB,那就得清理了。我们有几种策略:
- 限制日志保留时间:告诉系统只保留最近 3 天的日志。
sudo journalctl --vacuum-time=3d - 限制日志大小:比如只保留 50MB 以内的日志。
sudo journalctl --vacuum-size=50M
这招非常有效,很多用户发现清理完日志后,/var 分区瞬间轻松了 2GB。
3. Flatpak 缓存:新世界的“垃圾场”
Pop!_OS 非常推崇 Flatpak 格式的软件。Flatpak 有个特性叫“版本保留”,当你更新一个 Flatpak 应用时,它不会直接覆盖旧版本,而是保留旧版本以防回滚。这会导致 .local/share/flatpak/app 和 .local/share/flatpak/overrides 下堆积大量旧版本数据。
你可以运行:
flatpak uninstall --unused
这会自动卸载那些不再被任何应用依赖的运行时库。
如果你想彻底清理某个应用的所有历史版本,可以:
flatpak uninstall --delete-data <app-id>
4. Thumbs 缩略图缓存
每次你浏览图片文件夹,系统都会生成缩略图,存在 ~/.cache/thumbnails/。如果你经常换图,这里也能积几个 G。
rm -rf ~/.cache/thumbnails/*
注意,这不会删除你的原图,只是删了预览小图。下次打开文件夹时,系统会重新生成,但这样能保持缓存目录的精简。
5. 大文件侦探:找出谁吃掉了磁盘
如果上面的常规清理做完,磁盘还是满的,那肯定有东西藏得很深。这时候 ncdu 是最好的朋友。它比 du -sh * interactive,鼠标上下键就能导航,看着文件树像剥洋葱一样展开。
sudo apt install ncdu
ncdu /
运行后,你会看到一个交互式界面。建议从 /home/你的用户名 开始扫,因为系统目录 /usr, /bin 这些通常有权限保护且结构固定,问题大多出在用户数据里。
你可能会发现:
~/.cache里某个浏览器缓存巨大。~/.local/share/Steam或~/.var/app/com.valvesoftware.Steam里的游戏下载缓冲。- 旧的虚拟机磁盘镜像(
.qcow2,.vmdk),这些文件动辄几十 G,不用了就删。
系统维护与性能优化:不仅仅是清理
清理垃圾只是治标,想让 Pop 跑得更快,还得从系统配置入手。
1. 调整 Swappiness(交换分区活跃度)
Swap 是用磁盘空间模拟内存。磁盘读写速度比内存慢几个数量级,所以尽量少用 Swap。Linux 默认倾向于积极地使用 Swap,可以通过调整 vm.swappiness 来改变这个行为。
默认值通常是 60。我们可以把它调低,比如 10,意思是直到内存压力很大时,才去用 Swap。
查看当前值:
cat /proc/sys/vm/swappiness
临时调整(重启失效):
sudo sysctl vm.swappiness=10
永久调整,编辑 /etc/sysctl.conf:
sudo nano /etc/sysctl.conf
在文件末尾添加:
vm.swappiness=10
保存退出(Ctrl+O, Enter, Ctrl+X)。
注意:如果你内存很大(32G 以上),甚至可以设置为 0 或 1,但这取决于你的具体工作负载。对于大多数桌面用户,10 是个安全且高效的值。
2. 检查 I/O 调度算法
对于 SSD(固态硬盘),使用正确的 I/O 调度算法能减少不必要的写入和延迟。现代 SSD 通常使用 none 或 mq-deadline 调度器。
查看当前的调度器:
cat /sys/block/sda/queue/scheduler
(把 sda 换成你的磁盘名,用 lsblk 可以查看)
如果显示的是 bfq 或 cfq,对于 SSD 来说可能不是最优的。你可以尝试修改为 none。
编辑 /etc/default/grub:
sudo nano /etc/default/grub
找到 GRUB_CMDLINE_LINUX_DEFAULT 这一行,在引号内添加 elevator=none。
例如:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=none"
然后更新 Grub:
sudo update-grub
重启生效。
特例:如果你用的是 NVMe SSD,none 调度器是最常见的推荐,因为 NVMe 自带多队列,内核层级的调度器作用较小。
3. 禁用不必要的启动服务
Pop 的启动项管理图形界面很好用。打开应用程序列表,搜索“启动应用程序”(Startup Applications)。
看看里面有什么?
- Cinnamon/MATE/GNOME 的某些组件:如果你用不到,可以禁用。
- 打印服务(CUPS):如果你没有打印机,完全可以禁用,能省点资源。
- 蓝牙服务:如果你只用有线键鼠,且很少用蓝牙设备,可以禁用蓝牙守护进程。
- System76 的电源管理 daemon:这个是推荐的,别动它。
更彻底的检查可以用 systemd-analyze blame,它会列出每个服务启动花了多少时间:
systemd-analyze blame
找出那些启动特别慢的服务,如果是你没用到的,就用 systemctl disable <服务名> 禁用它。
4. 显卡驱动:NVIDIA 用户的专属福音
Pop!_OS 最大的优势之一就是它对 NVIDIA 驱动的无缝支持。如果你用的是 NVIDIA 显卡,请务必使用 System76 提供的 pop-nvidia ISO 或者在系统内安装 pop-os-kernel 和对应的驱动包,而不是从 Ubuntu 仓库安装驱动。
如果你已经装了驱动但还是卡顿,检查一下是否开了双显卡切换(Hybrid Graphics)。 在 Pop 的电源设置里,你可以选择“性能”模式(独显直连)或“节能”模式。玩大游戏或者做渲染时,切到性能模式,虽然费电,但性能会有质的飞跃。
也可以用 nomodeset 或者检查 prime-select 状态:
prime-select query
如果是 on-demand,说明系统会根据负载切换显卡,这有时候会导致切换瞬间的卡顿。如果是纯粹的游戏机用途,可以强制设为 nvidia。
深度清理:Docker 和 Snaps
Docker 容器清理
如果你是个开发者,Docker 可能会在 /var/lib/docker 下堆积大量未使用的镜像、容器和卷。
# 清理所有停止的容器、未被使用的网络、悬空的镜像和构建缓存
docker system prune -a
警告:这会删除所有你不再运行的容器和未标记的镜像。请确保你的数据已经备份或保存在 Volume 中。这个命令能释放惊人的空间。
Snap 的陷阱
Pop 默认禁用并移除了 Snap 支持,这是明智的,因为 Snap 包通常体积巨大,且启动慢。但如果你后来安装了某些通过 Snap 提供的软件(比如 VS Code 的某些版本,或者 Spotify),它们会在 ~/snap 下留下大量旧版本。
检查 Snap 使用的空间:
snap list --all | awk '/disabled/{print $1, $3}' | while read pkg status; do snap remove "$pkg" --revision=$(echo $status | tr -d '[]'); done
这段命令有点复杂,简单说就是清理掉那些被禁用(disabled)的旧版本 snap 包。每个 snap 包通常都有好几个版本残留,清理掉旧的能省几个 G。
给小朋友也能听懂的比喻
说到这,咱们换个角度,就像给房子做大扫除一样。
你的电脑就像你住的房子:
- CPU 是你的大脑,负责思考。如果脑子里塞满了乱七八糟的念头(后台进程),反应肯定慢。
- 内存(RAM) 是你办公桌的大小。办公桌大,你能同时摊开很多文件(打开很多程序),工作效率高。如果办公桌堆满了废纸(缓存),新的文件就没地方放了。
drop_caches就像是你把办公桌上暂时不用的废纸扔进垃圾桶,腾出桌面空间。 - 硬盘(磁盘) 是你的衣柜和储物间。Apt 缓存就像你买回来的包装袋,用完就该扔(
apt clean)。Flatpak 的旧版本就像你换季时舍不得扔的旧衣服,留着占地方(flatpak uninstall --unused)。 - Swap 是地下室。当办公桌(内存)放不下时,你把文件搬到地下室(硬盘)。但地下室离得远,去拿文件(读写 Swap)比在桌上拿(读写内存)慢得多。所以我们要尽量让文件留在桌面上,而不是堆到地下室去。
最后的建议:心态与习惯
- 定期重启:这听起来很老土,但真的很有效。重启能清理掉内存泄漏、僵尸进程和会话中的累积错误。对于 Linux 桌面,每周重启一次是良好的习惯。
- 监控而非焦虑:装个
btop放在侧边栏,偶尔扫一眼。如果一切正常,就别动它。Linux 是“用进废退”的系统,你越折腾它,它越顺。 - 备份很重要:在做任何大规模清理或配置修改前,确保你有重要的备份。虽然我们要清理垃圾,但别把自己辛苦写的代码或照片误删了。可以用
Timeshift做系统级的快照备份。 - 接受“不完美”:Pop 是面向开发者和爱好者的系统,它不像 macOS 那样封闭和统一,也不像 Windows 那样千篇一律。它需要你来“打理”。这种维护的过程,本身也是理解计算机原理、掌控自己数字生活的一种乐趣。
希望这些技巧能帮你的 Pop 重新飞起来。如果还有卡顿,不妨在评论区或者社区里具体说说你的配置,咱们再对症下药。毕竟,每一台电脑的性格都不一样,就像人一样。
