当前位置: 首页 > 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.dtcms.com/a/318143.html

相关文章:

  • 企业后端系统常用数据源类型有哪些?
  • 8.pcl 点云特征
  • 服务器巡检项目
  • 大模型显存占用分析:以Qwen2.5-7B-Instruct为例,深度剖析推理、LoRA与全量微调
  • 友思特方案 | 如何提高3D成像设备的部署和设计优势
  • Python应用指南:获取风闻评论数据并解读其背后的情感倾向(二)
  • Linux环境下部署SSM聚合项目
  • 微信小程序初次运行项目失败
  • 引入消息队列带来的主要问题
  • 家政小程序系统开发:打造一站式家政服务平台
  • CSS Flexbox 的一个“坑”
  • 【动态规划 | 01背包】动态规划经典:01背包问题详解
  • 解析 div 禁止换行与滚动条组合-CSS运用
  • 模电知识点总结
  • 30ssh远程连接与远程执行命令
  • python实现获取k8s的pod信息
  • 华为云安全组默认规则
  • [两数之和II]
  • 保姆级教程:从0手写RAG智能问答系统,接入Qwen大模型|Python实战
  • Django创建抽象模型类
  • Ethereum:Hardhat Ignition 点燃智能合约部署新体验
  • Linux发行版分类与Centos替代品
  • React:受控组件和非受控组件
  • 将ssm聚合项目部署到云服务器上
  • MyBatis基础操作完整指南
  • 计数组合学7.14(对偶 RSK 算法)
  • 四、Envoy动态配置
  • 工业协议转换终极武器:EtherCAT转PROFINET网关的连接举例
  • 直播SDK商业化 vs 开源路线:工程稳定性、成本与演进能力全对比
  • 嵌入式开发学习———Linux环境下IO进程线程学习(五)