内存诊断工具结果不写入/var/log/,需查dmesg(如dmesg | grep -i "memory|ecc|mce")、memtester重定向日志或GRUB手动启动memtest86+的控制台输出。

要在系统日志中定位内存诊断工具(如 memtest86+、memtester 或内核自带的内存检测模块)运行后的测试结果,必须明确:这些工具绝大多数不将结果写入 /var/log/ 下的标准日志文件,而是依赖启动时的 BIOS/UEFI 控制台输出、内核环形缓冲区(dmesg)或专用日志路径。
确认是否真有内存诊断工具在本次启动中运行过
很多用户误以为“装了 memtest86+ 就等于每次开机都测”,其实它默认不自动运行。需手动从 GRUB 菜单选择启动项才能触发测试。若未主动进入 memtest86+ 环境,【/var/log/ 中根本不会生成任何相关日志】。
检查当前启动是否执行过内存测试:重启 → 在 GRUB 启动菜单按 Shift(非 UEFI 系统)或长按 Esc(部分 UEFI)→ 查看是否有 “Memory test (memtest86+)” 选项 → 若曾选中并完成测试,继续下一步;否则本流程终止。
查看 dmesg 中的内核级内存自检与错误记录
Linux 内核在每次启动时都会执行基础内存映射与校验,所有异常(如坏页、ECC 错误、地址冲突)会直接打入内核环形缓冲区。
执行:dmesg | grep -i "memory\|ecc\|bad\|mce\|fatal"
重点关注含 “Machine Check Exception”、“Corrected error”、“Uncorrectable error”、“page allocation failure” 的行。若出现 “Hardware Error” 开头的完整段落,说明已捕获到物理内存故障证据。
注意:dmesg 缓冲区会滚动覆盖,如系统已运行数天,早期内存报错可能已被刷出。此时应立即执行 dmesg -T > /tmp/dmesg_mem.log 保存快照,避免后续操作覆盖关键信息。
检查 memtester 工具的本地执行日志
memtester 是用户态内存压力测试工具,它本身不写系统日志,但支持重定向输出到文件。
方法一:运行时显式记录
执行:memtester 1G 5 2>&1 | tee /tmp/memtester_$(date +%s).log(测试 1GB 内存、循环 5 轮,并实时保存带时间戳的日志)
方法二:检查历史执行痕迹
运行:history | grep memtester → 找出最近一次调用命令 → 检查其是否含 > /path/to/log 或 | tee;若无,则该次运行无持久日志,仅停留在终端屏幕。
读取 /sys/firmware/acpi/tables/ 和 /proc/meminfo 中的隐含线索
某些服务器平台(尤其 Dell、HPE)会在 ACPI 表中暴露内存模块的健康状态,而内核会将其映射为 sysfs 接口。
第一步:检查是否存在内存错误计数器
执行:ls /sys/firmware/acpi/tables/ | grep -i "e79\|wmi\|mem"
第二步:若发现类似 DMAR、HEST(Hardware Error Source Table)文件,用 cat /sys/firmware/acpi/tables/HEST | hexdump -C | head -20 查看头部标识;该表若存在且被内核解析,会在 dmesg 中打印 “HEST: Table not found” 或 “HEST: Found”。
第三步:对比 /proc/meminfo 中的 MemAvailable 与 MemTotal 差值是否异常偏小(如小于 5%),再结合 MemFree 极低 + DirectMap* 行数值突降,可间接佐证内存被硬件隔离或标记为坏段。

















