一次完整的 Linux 系统优化实录:从开机卡死到一键自检脚本
很多人装好 Linux 就一直用着,从不关心系统状态,直到某天开机卡死、弹窗不断才手忙脚乱。前几天我对自己的一台机器做了一次"全身体检",从硬件状态、系统服务,一路排到硬盘寿命和剪贴板故障,最后还写了一个一键自检脚本。整个过程踩了不少坑,也总结出一套对普通用户(尤其是小白)真正有用的经验。这篇文章把排查过程完整记录下来,所有命令都可以直接复制使用。优化的前提是先知道"现在什么样"。我先用几条基础命令把家底摸清楚:lscpu | grep -i mhz # CPU 频率sensors # 温度(需装 lm-sensors)• CPU:Intel i5-8400,6 核,待机温度 40–44°C,非常健康• 内存:15G 总,只用 3G,swap 完全没动💡 小白常见疑问:我明明买的是 16G 内存,为什么只显示 15G?这不是系统"吞"了内存,而是单位换算差异:厂商按 1GB = 10亿字节计算,标为 16GB;而 Linux 内核按 1GiB = 1024³ 字节计算,换算后约为 14.9GiB,显示为 15G 完全正常。再加上内核会预留几百 MB 用于自身运行和硬件映射(尤其是 Intel 核显会占用一部分作为显存),所以看到 15G 反而是"一切正常"的信号。• 磁盘:KINGSTON SA400S3 480G 固态,根分区 19%、家目录 3%,空间充裕• 显卡:Intel 核显 + NVIDIA GTX 1060 3G,驱动正常,待机 50°C• 负载:0.66 / 0.97 / 1.10,对 6 核来说很轻松Failed to start casper-md5check.service - casper-md5check Verify Live ISO checksums.casper 系列服务是制作启动盘时用来校验 ISO 的,装在实体系统上还启用纯属多余,而且每次开机都会报错。禁用它:sudo systemctl disable --now casper.service casper-md5check.service默认 vm.swappiness=60,对 15G 内存 + 固态来说偏激进,会过早把内存数据换到磁盘。调到 10 更合理:echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf用 apt list --upgradable 发现有待更新包,顺手升级掉:sudo apt update && sudo apt upgrade -ygkr-pam: couldn't unlock the login keyring.原因是密钥环密码和你现在的登录密码不一致,导致开机无法自动解锁。2. 左侧"密码"里找到默认密钥环,右键 → 更改密码3. 把新密码设为空(留白不填),会提示"将不加密",确认即可如果旧密码忘了改不了:在文件管理器按 Ctrl+H 进 .local/share/keyrings/,把 Default_Keyring.keyring 和 default 改名加 .bak 备份,重启让系统重建一个用登录密码锁的密钥环。四、重启后卡死?Firefox 与 gnome-keyring 的相爱相杀• 重启时 Firefox 设了"恢复上次会话",自动打开之前的页面• 那些页面要读密钥环 → gnome-keyring-daemon 弹出"输入密码解锁"对话框1. 按 Ctrl + Alt + F3 切到虚拟终端,登录killall gnome-keyring-daemon3. 按 Ctrl + Alt + F7 回到桌面• Firefox 设置里取消"打开上次浏览的窗口和标签页",避免它一启动就去读密钥环清理时发现 apt 缓存白白占了 1.6G,顺手清掉:sudo journalctl --vacuum-size=100Msudo apt install smartmontoolssudo smartctl -A /dev/sdasudo smartctl -H /dev/sda• 通电时间约 2.4 年,重分配扇区、坏块、擦除失败全为 0 → 颗粒本身健康• 剩余寿命显示 24% —— 这是唯一要警惕的指标判断结论:目前不会丢数据,但因为是一块无缓存的入门级固态(写入放大偏高),寿命余量确实不多了。1. 最重要:养成备份习惯,把家目录重要文件定期备份2. 避免强制断电(会加剧损耗并可能损坏文件系统)3. 每隔几个月跑一次 sudo smartctl -A /dev/sda | grep SSD_Life_Left,剩余降到 10% 以下就该准备换盘顺便确认 fstrim 已自动开启(对延长固态寿命有帮助):systemctl is-enabled fstrim.timer最后的坑最隐蔽:想把我给的命令复制粘贴到终端执行,结果怎么都粘不进去,连新开的终端也不行。排查后发现根因:在 opencode 这类终端界面里"右键复制",提示的"已复制到粘贴板"是它的内部复制(走 OSC 52 转义),而 xfce4-terminal 默认不处理这种剪贴板,所以内容根本没进系统剪贴板,新终端自然粘不出。• 终端里 Ctrl+V 本来就不是粘贴(会被终端拦截),要用 Ctrl+Shift+V 或 Shift+Insert,或鼠标中键• 如果想把内容粘到浏览器、记事本等普通程序,才用 Ctrl+V• Linux 有"主选区"(鼠标中键粘贴)和"剪贴板"(Ctrl+C/V)两套机制,它们不一定互通为了彻底绕开"复制粘贴失灵"这个坑,我改用更省事的办法:需要执行的命令,我先写成脚本文件,你只跑一行命令即可,零复制、零粘贴。我把这次巡查的所有项目整合成了一个开源脚本 linux-system-health-check(https://github.com/zseagate/linux-system-health-check),以后复查系统只需一条命令:sudo bash system-health-check.sh运行后会对以下项目做检查,并用彩色 [正常] / [注意] / [异常] 标记结果:• 基础信息(主机名、系统、内核、运行时间、负载)• SSD 健康:通电时间、累计写入、重分配扇区、温度、剩余寿命、SMART 总体(需 smartmontools)• 误启的 Live-ISO 服务(casper 系列)sudo apt install -y smartmontools lm-sensorsgit clone https://github.com/zseagate/linux-system-health-check.gitcd linux-system-health-checkwget https://raw.githubusercontent.com/zseagate/linux-system-health-check/master/system-health-check.shsudo bash system-health-check.sh执行时会提示输入密码(输入时屏幕不显示,属正常现象)。脚本会逐项打印检查结果。============================================================================================--- SSD 健康 (smartctl) ---📎 项目地址:https://github.com/zseagate/linux-system-health-check(https://github.com/zseagate/linux-system-health-check)这样日常维护就变成了"跑一条命令看报告",再也不用记一堆命令,也不用跟剪贴板较劲。一次完整的系统巡查,往往不是"发现一个大问题",而是一堆小问题叠加:误启的服务、偏高的参数、不一致的密码、悄悄消耗的硬盘寿命、还有让人抓狂的剪贴板。真正有价值的,不是某一条命令,而是建立"先体检、再优化、留个一键复查"的习惯。希望这篇实录能帮你少走弯路。如果你也想给自己的机器做个体检,可以从第一节那几条基础命令开始,或者直接 clone 我的脚本跑一遍。小提示:文中所有 sudo 命令执行时会让你输密码,输入时屏幕不显示属正常现象。📌 觉得有用?欢迎去 GitHub 点个 Star ⭐ 支持一下,也欢迎转发让更多人少踩坑。💬 你在使用 Linux 时遇到过哪些"莫名其妙"的问题?欢迎在评论区聊聊。