银河麒麟V10在物理内存与Swap耗尽时触发OOM Killer强制终止进程,但默认不通知用户;需通过dmesg -T | grep "killed process"或sudo grep -i "killed process" /var/log/kern.log*查日志定位被杀进程、时间及原因,并结合MemAvailable值与进程RSS排名分析内存状态。

银河麒麟V10系统在物理内存与Swap资源双双耗尽时,内核OOM Killer会强制终止进程以保全系统基本运行,但默认不主动通知用户——你需要手动翻查内核日志才能确认哪个进程被杀、为何被杀、何时被杀。
检查dmesg日志中最近的OOM事件
打开终端,执行:dmesg -T | grep -i "killed process"。
这条命令会按时间戳(-T)输出全部内核消息,并筛选出含“killed process”的行,这是OOM Killer触发后留下的最直接证据。
如果返回为空,不代表没发生过OOM——可能日志已被轮转覆盖,需进一步查/var/log/kern.log。
查看/var/log/kern.log中的历史OOM记录
执行:sudo grep -i "killed process" /var/log/kern.log*。
注意:kern.log会按日期滚动(如kern.log.1.gz、kern.log.2.gz),加*可一次性扫描所有压缩与未压缩版本。
【必须用sudo】否则普通用户无法读取压缩日志文件(.gz)及部分归档日志。
若提示“没有匹配”,说明当前日志周期内未触发OOM;若返回多行,每行末尾括号里的进程名(如chrome(12345))即为被杀进程,数字是PID。
定位OOM发生的精确时间与内存状态快照
第一步:从dmesg结果中复制某次OOM事件的时间戳(例如[Mon Sep 2 14:22:07 2026])。
第二步:用该时间戳反向查找前后30秒的完整内存上下文:dmesg -T | sed -n '/Mon Sep 2 14:22:07 2026/,+30p'。
这段输出里必然包含三类关键信息:触发OOM前的MemAvailable值(真实可用内存)、各进程RSS占用排名、以及被选中杀死的进程及其得分(score)。得分越高,越容易被杀——通常RSS大、运行时间短、非root用户的进程得分偏高。
第三步:对照free -h当前输出,确认MemAvailable是否长期低于500MB。若持续低于该阈值,说明系统已处于OOM高风险区,需立即排查缓存堆积或内存泄漏。

















