系统启动提示oom的处理过程

简介: entos 系统主机启动后提示oom,重启后第一时间也是oom

作者:枫凡

问题背景

centos 系统主机启动后提示oom,重启后第一时间也是oom
image.png

排查过程

接到此工单之前,通用技术同学已经尝试将系统内部禁止了nginx,php-fpm,mysqld,/etc/rc.local 中的/usr/bin/zabbix_server 的开机自启动,但依然无效,升级过来
常见服务已经禁止,重启也无效,可以使用单用户模式尝试进入查看加载,确认下是否系统服务影响
第一次没有看到启动过程,但是启动后也是提示oom,可以说明并非客户安装的第三方服务导致,而是由于系统内部自身的服务可能被添加篡改导致了
再重启第二次观察单用户模式启动过程,看到如下加载内容
image.png

可以定位问题了,/etc/init.d/functions 中有异常的内容在循环耗尽内存
挂载修复盘查看该文件内容,可以明显看到有一句话木马,就是“罪魁祸首”
image.png

解决方案

将/etc/init.d/functions 中添加的一句话木马注释重启后恢复正常

扩展

一句话木马解析

:( ) ;:

执行该语句会导致系统内存耗尽,有名的“fork炸弹”
原理就是定义一个函数,并不断递归,不停地制造后台任务
image.png

写的容易理解一点就是如下

function() 
;
function
相关文章
|
2月前
|
Linux 数据库 Perl
【YashanDB 知识库】如何避免 yasdb 进程被 Linux OOM Killer 杀掉
本文来自YashanDB官网,探讨Linux系统中OOM Killer对数据库服务器的影响及解决方法。当内存接近耗尽时,OOM Killer会杀死占用最多内存的进程,这可能导致数据库主进程被误杀。为避免此问题,可采取两种方法:一是在OS层面关闭OOM Killer,通过修改`/etc/sysctl.conf`文件并重启生效;二是豁免数据库进程,由数据库实例用户借助`sudo`权限调整`oom_score_adj`值。这些措施有助于保护数据库进程免受系统内存管理机制的影响。
|
安全 Linux 开发者
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
560 1
|
12月前
|
安全 Linux 应用服务中间件
操作系统引导过程 与 服务进程的控制
操作系统引导过程 与 服务进程的控制
|
安全 Linux 芯片
很有用的速度优化:让系统启动速度更快
很有用的速度优化:让系统启动速度更快
使用 jconsole 命令观察线程
当我们使用多线程编程时,我们可以使用 jconsole 来观察线程的状况。下面我将带领大家如何找到 jconsole 命令
使用 jconsole 命令观察线程
|
关系型数据库 Java 应用服务中间件
关于 qt程序退出出现“已停止工作”程序奔溃问题 的解决方法
关于 qt程序退出出现“已停止工作”程序奔溃问题 的解决方法
关于 qt程序退出出现“已停止工作”程序奔溃问题 的解决方法
|
Linux 测试技术 Shell
系统诊断小技巧(11):如何解决“问题复现了,但是捕捉数据进程因为CPU打满没有运行”?
引子 曾经搞过一个尴尬的案例。排查过一个CPU打满的问题。因为问题是在凌晨出现,而且非常随机。所以我们就准备了一个脚本,用来捕获占用CPU高的线程。但尴尬的是,问题复现了,我们的脚本偏偏在问题复现的时候,没有记录。
2081 0