一次脚本和crond引发的系统故障

今天早上来到公司,第一件事就是打开监控看下情况。一看吓死人,几乎所有的服务器负载全部跑到1千多,但是我又没有收到邮件报警:(故障如下)

排错步骤:

(1)登录其中一台机器。发现负载很正常。而且没有收到邮件。那说明应该就是监控机的问题了。

(2)登录监控机。top命令查看如下:

(3)看到下面有很多bash的命令,就应该了解到,应该是某个脚本死循环照成的,先不关心谁写的赶紧解决再说。

(4)查看一下到底是哪个脚本死循环。用ps -ef | grep bash .查看是一个死循环的脚本引起的。(是一个for循环,sleep3秒。主要是一个curl 的脚本检查完整的返回值。)

(5)查看是否有定时任务,因为假如只有一条循环不会造成这么多。简单查看进程,原来是定义了5个星号;怪不得会这么多,因为本来机已经死循环了,再用crontab来执行,那负载高是正常的。

(6)停掉crontab进程./etc/init.d/crond stop.

(7)执行命令杀掉所有的脚本进程。ps -ef | grep /root/moni | awk ‘{print $2}‘ | xargs kill -9

(8)执行完之后。发现还没有降下来,还有很多的邮件队列,顺便也把所有的邮件进程Kill。

(9)但是还没有发现有效果顺便把脚本直接删除(这步不应该执行。)

(10)发现负载还是很高。再次用top打开查看的时候发现很多僵死进程。

(11)应该是刚才我强行删除了,邮件的程序和脚本文件,导致进程僵死了,接下来杀死僵死进程。

(12)慢慢等待之后,系统终于逐渐恢复了:

总结分析:注意,当我们写for 或者死循环的时候,直接后台执行一次就可以了,不用加到定时任务,否则会照成不必要的麻烦。脚本已经被删除,无法展示。

时间: 2024-10-29 00:46:12

一次脚本和crond引发的系统故障的相关文章

解决crond引发大量sendmail、postdrop进程问题

问题:服务器内存接近耗尽报警,ps -ef查看有3000多个进程,大部分都是crond.sendmail.postdrop,如图: 可以发现postdrop是由sendmail启动的,而sendmail又是由crond启动的. 问题成因:crond在执行脚本时会将脚本输出信息以邮件的形式发送给系统用户,所以必然要调用sendmail,而sendmail又会调用postdrop发送邮件,但是如果系统的postfix服务没有正常运行,那么邮件就会发送不成功,造成sendmail.postdrop.c

ssh反向主动连接 及脚本加密

近来,在为公司客户部署相关DNS系统服务,用于资源调度服务,但是客户出口缺少公网ip地址,不能方便的去管理这台服务器,开始想到使用teamviewer做中转,穿透内网,但是在Centos环境下,照teamviewer官方给出的手册尝试安装多次,未果,始终未能获取ID号,甚至最后都安装了图形gnome环境,尝试在图形环境下安装teamviewer,网络始终是notReady,最后,只能放弃使用teamviewer,在公司找了台有公网ip的机器,用ssh反向主动连接,也就是常说的端口转发. 这种方式

在C#中调用VBScript和JavaScript等脚本的实现

在C#中调用VBScript.JavaScript等脚本的实现 作者:郑佐 2004-04-26 以前在做工作流(workflow)项目的时候,里面有一项就是在用户制定流程定义时可以编写脚本来控制活动的跳转,而这些脚本定义后存在数据库中,当流程启动的时候,工作流引擎会控制活动执行顺序,串型的两个活动比较简单,但有的活动到下一个活动有条件判断,或者存在多个分支,简单的还好,只要在数据库表中加个字段就可以实现,复杂一点的就需要通过脚本实现了.当时经验不够,几天都没找到快速的解决办法,想自己写一个自定

让你久等了!《开源安全运维平台OSSIM疑难解析--入门篇》9月上市

2019年暑期,众所期待的新书<开源安全运维平台OSSIM疑难解析:入门篇>开始印刷,9月份即可预售.此书从立意到付梓,历时超过两年,经过数十次大修,历经曲折与艰辛,希望为大家代奉献一本好书,愿这本书能陪伴OSSIM用户一起进步一起成长. 一.写作目的 目前,OSSIM在中国移动.中国电信.中国石油.华为等大型企业内得到应用推广,这些企业在安全运营中心(SOC)基础上组建了OSSIM运维和二次开发团队,但图书市场缺乏专门讲解OSSIM运维和开发的书籍.为了解答OSSIM运维工程师在工作中遇到的

nginx日志切割配置

1. 编辑脚本 说明:date -d "-1 day" 表示昨天: %F表示年月日以Y%-m%-d形式:[-d ]表示判断是否有这个目录,如果没有就或关系,创建该目录:将每日的access.log文件挪到创建的目录/tmp/nginx_log/中,并命名为d变量的格式:reload用于重新生成acces.log,并重定向清空:考虑到切割的日志比较大,gzip -f判断日志是否存在,如果存在,则进行强制压缩(如果一天执行多次,该文件已经存在并压缩过,则会同名,-f覆盖不提示) vim /

MHA动态管理主从复制并结合zabbix完成监控

MHA节点:会通过监控到的master节点故障时,会提升其中用于最新数据的slave节点成为新的master节点,在此期间,MHA会通过其他从节点获取额外信息来避免一致性方面的问题.MHA还提供了master节点的在线切换功能,即按需切换master/slave节点. 注:不过,这个正常使用在centos6上面创建是没有问题的,但是要是centos7上面安装没什么问题,基本使用也可以,但是不知道在生产环境中的坑有没有,所以还望大家甄别. 实验环境:四台centos7 主机ip          

linux crontab定时执行

#利用crontab定时执行url研究了两种简单方式#一利用lynx访问url yum install lynxservice crond startcrontab -einsert键* * * * * lynx -dump http://192.168.0.10/gas_station_erp/index.php/socket/SendDev/getDevInfoesc :wqservice crond restart #* * * * * 表示每分钟执行一次 #二调用sh脚本 service

集群LVS 实现数据共享

实验内容介绍: 本次实验是根据LVS的DR模式下实现负载均衡.在两台的Real Server 上安装web服务,并在服务器上搭建Discuz,而两台RS上的网页内容一样,通过rsync+sersync实现网页数据的同步.在共享存储上我们使用一台mysql服务器,来进行数据的存储.在试验过程中还需一台DNS服务器进行域名解析,来解析RS上的域名. 实验环境结构图: 一.实验步骤: 1.两台Real Server主机的配置:(两台配置相同) 安装编译环境:         # yum groupin

sersync服务搭建

前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsync+Inotify-tools (1):Inotify-tools只能记录