当前位置:首页>Linux>一次完整的 Linux 系统优化实录:从开机卡死到一键自检脚本

一次完整的 Linux 系统优化实录:从开机卡死到一键自检脚本

  • 2026-09-04 15:56:15
一次完整的 Linux 系统优化实录:从开机卡死到一键自检脚本
很多人装好 Linux 就一直用着,从不关心系统状态,直到某天开机卡死、弹窗不断才手忙脚乱。
前几天我对自己的一台机器做了一次"全身体检",从硬件状态、系统服务,一路排到硬盘寿命和剪贴板故障,最后还写了一个一键自检脚本。整个过程踩了不少坑,也总结出一套对普通用户(尤其是小白)真正有用的经验。
这篇文章把排查过程完整记录下来,所有命令都可以直接复制使用。
------
一、先摸家底:硬件与系统状态
优化的前提是先知道"现在什么样"。我先用几条基础命令把家底摸清楚:
uname -a          # 内核与主机信息
uptime            # 运行时间与负载
free -h           # 内存和 swap
df -h             # 磁盘分区使用
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 核来说很轻松
结论:硬件层面没毛病,问题出在"软件配置"上。
------
二、揪出问题:那些不该启用的服务和该调的参数
巡查中发现了几个明显可优化点:
1. 误启的 Live-ISO 服务
系统日志里反复出现:
Failed to start casper-md5check.service - casper-md5check Verify Live ISO checksums.
casper 系列服务是制作启动盘时用来校验 ISO 的,装在实体系统上还启用纯属多余,而且每次开机都会报错。禁用它:
sudo systemctl disable --now casper.service casper-md5check.service
2. swappiness 偏高
默认 vm.swappiness=60,对 15G 内存 + 固态来说偏激进,会过早把内存数据换到磁盘。调到 10 更合理:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
3. 拖延的系统更新
用 apt list --upgradable 发现有待更新包,顺手升级掉:
sudo apt update && sudo apt upgrade -y
------
三、小白也会遇到的坑:登录密钥环弹窗
重启后日志里还有这类报错:
gkr-pam: couldn't unlock the login keyring.
原因是密钥环密码和你现在的登录密码不一致,导致开机无法自动解锁。
给纯小白一个最简单的处理思路:
1. 打开"密码和密钥"(Seahorse)
2. 左侧"密码"里找到默认密钥环,右键 → 更改密码
3. 把新密码设为空(留白不填),会提示"将不加密",确认即可
这样以后密钥环永远不会弹窗,家用环境最省心。
如果旧密码忘了改不了:在文件管理器按 Ctrl+H 进 .local/share/keyrings/,把 Default_Keyring.keyring 和 default 改名加 .bak 备份,重启让系统重建一个用登录密码锁的密钥环。
------
四、重启后卡死?Firefox 与 gnome-keyring 的相爱相杀
有次重启后开机直接"卡死"了。排查链条是这样的:
• 之前 gkr-pam 一直无法自动解锁密钥环
• 重启时 Firefox 设了"恢复上次会话",自动打开之前的页面
• 那些页面要读密钥环 → gnome-keyring-daemon 弹出"输入密码解锁"对话框
• 弹窗挡住桌面,看起来就像卡死了
救活步骤:
1. 按 Ctrl + Alt + F3 切到虚拟终端,登录
2. 执行:
killall firefox
killall gnome-keyring-daemon
3. 按 Ctrl + Alt + F7 回到桌面
根治办法:
• 把密钥环密码设为空(见第三节),弹窗彻底消失
• Firefox 设置里取消"打开上次浏览的窗口和标签页",避免它一启动就去读密钥环
------
五、硬盘还能撑多久?SMART 寿命评估
清理时发现 apt 缓存白白占了 1.6G,顺手清掉:
sudo apt-get clean
sudo journalctl --vacuum-size=100M
接着认真评估硬盘寿命,装个 SMART 工具:
sudo apt install smartmontools
sudo smartctl -A /dev/sda
sudo smartctl -H /dev/sda
这台固态盘的关键数据:
• 通电时间约 2.4 年,重分配扇区、坏块、擦除失败全为 0 → 颗粒本身健康
• 主机累计写入约 33.7TB
• 剩余寿命显示 24% —— 这是唯一要警惕的指标
• 温度 35–44°C,正常
判断结论:目前不会丢数据,但因为是一块无缓存的入门级固态(写入放大偏高),寿命余量确实不多了。
三点建议:
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
脚本检查项
运行后会对以下项目做检查,并用彩色 [正常] / [注意] / [异常] 标记结果:
• 基础信息(主机名、系统、内核、运行时间、负载)
• 内存与 Swap 使用情况
• CPU 温度(需安装 lm-sensors)
• 磁盘使用率与 inode
• SSD 健康:通电时间、累计写入、重分配扇区、温度、剩余寿命、SMART 总体(需 smartmontools)
• 误启的 Live-ISO 服务(casper 系列)
• swappiness 内核参数
• SSD TRIM 自动整理状态
• 待更新软件包数量
• 登录密钥环状态
安装与使用方法
① 安装可选依赖(用于硬盘健康和温度检测):
sudo apt update
sudo apt install -y smartmontools lm-sensors
② 下载脚本(任选一种方式):
# 方式 A:git clone
git clone https://github.com/zseagate/linux-system-health-check.git
cd linux-system-health-check
# 方式 B:直接下载单文件
wget https://raw.githubusercontent.com/zseagate/linux-system-health-check/master/system-health-check.sh
③ 运行脚本:
sudo bash system-health-check.sh
执行时会提示输入密码(输入时屏幕不显示,属正常现象)。脚本会逐项打印检查结果。
示例输出
==============================================
 系统状态自检 2026-08-19 01:15
==============================================
--- 基础信息 ---
主机名: gw-MS-7C31
系统: Linux Mint 22.3
内核: 7.0.0-29-generic
...
--- SSD 健康 (smartctl) ---
设备: /dev/sda
通电时间: 21104 小时 (~2.4 年)
剩余寿命: 24%
[注意] SSD 剩余寿命偏低,注意备份
SMART 总体健康: PASSED
...
📎 项目地址:https://github.com/zseagate/linux-system-health-check(https://github.com/zseagate/linux-system-health-check)
基于 MIT 许可证开源,可自由使用与修改。
这样日常维护就变成了"跑一条命令看报告",再也不用记一堆命令,也不用跟剪贴板较劲。
------
写在最后
一次完整的系统巡查,往往不是"发现一个大问题",而是一堆小问题叠加:误启的服务、偏高的参数、不一致的密码、悄悄消耗的硬盘寿命、还有让人抓狂的剪贴板。
真正有价值的,不是某一条命令,而是建立"先体检、再优化、留个一键复查"的习惯。希望这篇实录能帮你少走弯路。
如果你也想给自己的机器做个体检,可以从第一节那几条基础命令开始,或者直接 clone 我的脚本跑一遍。
------
小提示:文中所有 sudo 命令执行时会让你输密码,输入时屏幕不显示属正常现象。
------
📌 觉得有用?欢迎去 GitHub 点个 Star ⭐ 支持一下,也欢迎转发让更多人少踩坑。
💬 你在使用 Linux 时遇到过哪些"莫名其妙"的问题?欢迎在评论区聊聊。

最新文章

随机文章