linux死机时应先用sysrq组合键(r-e-i-s-u-b)安全重启,再通过dmesg -t、journalctl -b -1 -p err和syslog grep排查日志,硬件排查需结合smartctl、sensors、turbostat及lspci,假死需用perf分析调度事件。

Linux系统死机时,不能直接长按电源键——先尝试安全触发内核崩溃转储或强制同步再重启,否则可能损坏文件系统;日志排查必须依赖 /var/log 下的 syslog、kern.log 和 dmesg -T 输出,而非仅看图形界面残留信息。
系统无响应但键盘灯还亮:用 SysRq 组合键救急
这是最常被忽略的“软重启”入口,只要内核没完全锁死(比如卡在驱动或内存分配阶段),Alt + SysRq(通常和 Print Screen 同键)配合功能键就能干预。必须按住 Alt + SysRq 不放,再依次按字母键(每键间隔 1 秒以上),推荐顺序是 R(解除键盘锁定)→ E(向所有进程发 SIGTERM)→ I(发 SIGKILL)→ S(同步磁盘缓存)→ U(重新挂载根文件系统为只读)→ B(立即重启)。注意:S 和 U 是防止数据损坏的关键步骤,跳过可能导致 ext4 日志重放失败或 journalctl --verify 报错。
重启后怎么看真正导致死机的日志
图形界面卡死不等于内核崩溃,很多问题藏在底层。优先查三处:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
dmesg -T:显示带时间戳的内核环缓冲区,重点搜Oops、BUG、hung_task、Hardware Error—— 这些是硬故障信号;如果输出为空或只有启动日志,说明内核可能已 panic 并清空了 ring buffer,需依赖/var/log/kern.log -
journalctl -b -1 -p err:查上一次启动的错误级日志,比syslog更全,尤其对 systemd 服务崩溃有效;若系统用了persistent journal(默认开启),-b -2可查更早一次的崩溃上下文 -
cat /var/log/syslog | grep -i "kernel:.*\[.*\].*error\|panic\|segfault":绕过 journalctl 的二进制解析,直扫原始文本,适合排查kdump未捕获但 syslog 有记录的驱动级异常(如nvidia或amdgpu模块报错)
怀疑硬件问题?别只跑 memtest86+
内存故障只是表象,实际可能是电源不稳、CPU 过热降频、NVMe SSD 固件 bug 或主板 PCIe 链路错误。实操建议:
- 用
sudo apt install smartmontools(Debian/Ubuntu)或sudo dnf install smartmontools(RHEL/Fedora),然后运行sudo smartctl -a /dev/nvme0n1查Media_Wearout_Indicator和Error_Log_Entry_Count,NVMe 盘的0x01错误码常对应链路重置 -
sensors和sudo turbostat --interval 1对比看 CPU 温度与频率是否突降——若turbostat中Avg_MHz掉到几百且Thermal列持续 >95°C,大概率是散热失效触发了thermald熔断 -
lspci -vv -s $(lspci | grep -i "vga\|3d" | head -1 | cut -d' ' -f1)查显卡设备的LnkSta(链路状态)字段,如果Speed显示2.5GT/s而非8.0GT/s,说明 PCIe 握手失败,可能是 BIOS 设置或插槽接触不良
真正棘手的是那些没有明显错误日志的“假死”:比如某个内核线程在 mutex_lock 上无限等待,dmesg 不报错,ps aux 看不到异常进程,但 vmstat 1 会持续显示 bi(块设备输入)为 0 且 wa(IO wait)接近 100%。这时候得靠 perf record -e sched:sched_switch -a sleep 30 抓调度事件,再用 perf script 找出卡在哪个函数里——这一步多数人会跳过,但恰恰是定位深层死锁的唯一路径。










