当前位置: 首页 > news >正文

Linux 学习 之 killer 问题

命令功能说明

dmesg | grep -i kill 用于从系统内核日志中筛选包含 kill 关键字的信息(不区分大小写)。该组合常用于排查进程被强制终止(如 OOM Killer 触发)、硬件错误或系统资源限制导致的异常问题。

[19234682.004705] Out of memory: Kill process 1199793 (java) score 287 or sacrifice child
[19234682.004705] Killed process 1200033 (sh) total-vm:215488kB, anon-rss:1152kB, file-rss:0kB, shmem-rss:0kB
[19234682.004705] FlushManager invoked oom-killer: gfp_mask=0x6200ca(GFP_HIGHUSER_MOVABLE), nodemask=(null), order=0, oom_score_adj=0
[19234682.004705] oom_kill_process+0x334/0x370
[19234682.004705] Out of memory: Kill process 1199793 (java) score 287 or sacrifice child
[19234682.004705] Killed process 1199793 (java) total-vm:4934848kB, anon-rss:873408kB, file-rss:0kB, shmem-rss:64kB# 图中实际内存与虚拟内存的占比严重不合理(正常范围 40%~70%),故而需要查看内存设置。
# 虚拟内存是在物理内存的基础上分配的,当分配了太多的虚拟内存时,会导致物理内存不足,这时就会发生Out of memory## 查看内存统计,有多少空闲
free -h 

命令分解

  1. dmesg

    • 显示内核环形缓冲区中的日志,包含硬件检测、驱动加载、系统错误等信息。
    • 默认输出需 root 权限,普通用户可能需通过 sudo dmesg 访问完整日志。
  2. grep -i kill

    • -i 参数忽略大小写,匹配 killKILL 等变体。
    • 常见匹配场景:oom-killer(内存不足终止进程)、killed process(手动或系统终止进程)。

常见输出及解读

示例1:OOM Killer 终止进程

[12345.678] Out of memory: Killed process 1234 (nginx) score 512
  • 原因:系统内存耗尽,内核根据进程内存占用(score)选择终止目标(如 nginx)。
  • 解决:优化内存使用,增加系统内存,或调整 vm.overcommit_memory 参数。

示例2:权限或信号终止

[54321.0] Process 5678 (python) killed by signal 9 (SIGKILL)
  • 原因:进程被强制终止(SIGKILL),可能由用户手动 kill -9 或系统策略(如 cgroup 限制)触发。
  • 解决:检查进程日志或系统监控工具(如 top)确认终止原因。

示例3:硬件或驱动问题

[11111.222] Kernel panic - not syncing: Attempted to kill init!
  • 原因:关键系统进程(如 init)被终止,通常伴随内核崩溃。
  • 解决:检查硬件稳定性(如内存坏块)、驱动兼容性或系统更新。

扩展用法

  • 按时间筛选:结合 dmesg -T 显示可读时间戳,再通过 grep 过滤特定时间段。
    dmesg -T | grep -i "kill" | grep "Jun 15"
    
  • 统计终止事件:使用 wc 统计匹配行数。
    dmesg | grep -i kill | wc -l
    
  • 结合 journalctl:若系统使用 systemd,可通过以下命令查询更结构化日志。
    journalctl -k --grep="kill"
    

注意事项

  • 若输出为空,可能无相关事件,或日志被轮转覆盖(检查 /var/log/kern.log 归档)。
  • 高频繁进程终止需结合 dmesg --follow 实时监控,或使用 sarvmstat 分析资源趋势。
http://www.lryc.cn/news/612443.html

相关文章:

  • Unity笔记(三)——父子关系、坐标转换、Input、屏幕
  • STM32学习笔记3-GPIO输入部分
  • 【模电笔记】—— 直流稳压电源——稳压电路
  • RK3568笔记九十六:多路实时目标检测
  • Python应用指南:获取风闻评论数据并解读其背后的情感倾向(二)
  • 【补题】CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!) D. K-good
  • 基于单片机GD32E103的HID按键问题分析
  • hive专题面试总结2
  • 一、Envoy基础概念学习
  • 8.6笔记
  • 《嵌入式数据结构笔记(四):栈结构与队结构链表》
  • Chrontel【7322BMF】CH7322B HDMI Consumer Electronics Control (CEC) devices
  • GaussDB 数据库架构师修炼(六)-3 集群工具管理-主备倒换
  • prometheus+Grafana 监控中间件项目
  • 202506 电子学会青少年等级考试机器人四级实际操作真题
  • 架构层防护在高并发场景下的实践
  • 机器学习-LinearRegression
  • 机器学习模型调优实战指南
  • 机器学习——SVM
  • 居家养老场景下摔倒识别准确率提升 29%:陌讯动态姿态建模算法实战解析
  • 第五十一章:AI模型服务的“百变面孔”:WebUI/CLI/脚本部署全解析
  • 从原理图到PCB的布局
  • LiveQing视频RTMP推流视频点播服务功能-云端录像支持按时间段下载录像时间段下载视频mp4
  • STM32的PWR
  • 引领GameFi 2.0新范式:D.Plan携手顶级财经媒体启动“龙珠创意秀”
  • ZYNQ实现FFT信号处理项目
  • Python科学计算:从基础到工程仿真的完整指南
  • 指挥中心自动化的演变
  • cygwin+php教程(swoole扩展+redis扩展)
  • Redis使用的常见问题及初步认识