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

问题:服务器内存接近耗尽报警,ps -ef查看有3000多个进程,大部分都是crond、sendmail、postdrop,如图:

可以发现postdrop是由sendmail启动的,而sendmail又是由crond启动的。

问题成因:crond在执行脚本时会将脚本输出信息以邮件的形式发送给系统用户,所以必然要调用sendmail,而sendmail又会调用postdrop发送邮件,但是如果系统的postfix服务没有正常运行,那么邮件就会发送不成功,造成sendmail、postdrop、crond进程就无法正常退出,形成大量的僵尸进程

解决办法:先把僵尸进程都干掉ps -ef | egrep "sendmail|postdrop" | grep -v grep |xargs kill,让内存降下来,其实我一开始将postfix服务重启了一下,问题就解决了,观察了一段时间,僵尸进程并没有再次出现。

为防以后postfix挂了再出现类似问题,可以进行如下配置,将crond的邮件通知关闭:

将/etc/crontab和/etc/cron.d/0hourly里的MAILTO=root修改为MAILTO=""

crontab -e第一行增加一段MAILTO=""

时间: 2024-10-07 06:51:29

解决crond引发大量sendmail、postdrop进程问题的相关文章

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

今天早上来到公司,第一件事就是打开监控看下情况.一看吓死人,几乎所有的服务器负载全部跑到1千多,但是我又没有收到邮件报警:(故障如下) 排错步骤: (1)登录其中一台机器.发现负载很正常.而且没有收到邮件.那说明应该就是监控机的问题了. (2)登录监控机.top命令查看如下: (3)看到下面有很多bash的命令,就应该了解到,应该是某个脚本死循环照成的,先不关心谁写的赶紧解决再说. (4)查看一下到底是哪个脚本死循环.用ps -ef | grep bash .查看是一个死循环的脚本引起的.(是一

解决为应用程序池 提供服务的进程关闭时间超过了限制

为应用程序池 '×××' 提供服务的进程关闭时间超过了限制.进程 ID 是 '7480'. 提示的ID可以有很多,例如3844.8004.6124等数字.在百度上搜了下,发现很多类似的问题,引发的根本原因未知,但导致出现此种情况的直接原因为IIS失败保护!例如设置失败保护为每5分钟失败数超过5次则关闭应用程序池,就会出现停止服务的情况,此时提示日志为:应用程序池 '×××' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误.解决办法如下:Internet 信息服务(IIS)管理器-

解决CentOS(RedHat)中sendmail和sm-client启动慢故障(转)

Starting sendmail: Starting sm-client: 刚才发了修改主机名那篇文章后,我意外发现重新启动CentOS的时候系统会卡在sendmail和sm-client那里将近3分钟才继续,找了一下sendmail和sm-client的文档发现自己犯了一个错误. 我简单说一下原因,就是sendmail和sm-client都是MTA,只认网络主机名,如admin.slyar.com这样的,而我之前那篇文章直接把localhost.localdomain改成了Slyar,不符合

解决john不能开多个进程的问题

在使用john进行shadow文件破解时,如果已经开了一个john的进程,这回提示以下错误: Crash recovery file is locked: /root/.john/john.rec    意思是/root/.john/john.rec文件被锁定. 通过测试只要把 /root/.john/john.rec这个文件删除就不会报错了. 所以可以通过 watch rm -rf /root/.john/john.rec 命令.每两秒删除一次这个文件. 再开多个进程进行shadow文件批量破

解决IIS设置多个工作进程中Session失效的问题

利用StateServer实现Session共享 session保存在专门的StateServer中,该种方式,性能损失比sql略好.比inproc据说有10%-15%的性能损失.怎么使用StateServer 服务器呢? 1.初始化StateServer服务器 启动ASP.NET 状态服务[aspnet_state],该服务默认是手动启动的,可以通过修改注册表,设置为自动启动并允许远程连接.修改方法如下: 修改注册表: [HKEY_LOCAL_MACHINE/SYSTEM/ControlSet

由于crondtab定时任务导致大量sendmail进程的解决办法

早上六点多钟有一台服务器告警说宕机了,尝试登陆发现登陆服务器没问题,ps -ef | grep mysql的时候发现mysqld服务也还在,mysql错误日志也没有任务报错.但是查看vim /var/log/messages时发现是硬盘有问题,尝试touch一个文件的时候提示'read-only file system',于是联系机房检测故障. 但是当执行top的时候发现当前用户下面有很多sendmail的进程,如下图所示,发件人是crondaemon,怀疑是和定时任务有关,查看当前用户的定时任

crond守护进程

Linux系统任务计划/etc/crontab cron的主配置文件,可以定义PATHcron格式如下:# .----------------分钟 (0 - 59)# | .------------- 小时 (0 - 23)# | | .---------- 日 (1 - 31)# | | | .------- 月 (1 - 12)# | | | | .---- 周 (0 - 6) (周日=0 or 7) # | | | | |# * * * * * user-name command to b

解决NSDistributedLock进程互斥锁的死锁问题(一)

在MAC下的多进程开发中,NSDistributedLock是一个非常方便的互斥锁解决方案,一般的使用方法: 12345678 NSDistributedLock *lock = [[NSDistributedLock alloc] initWithPath:@"/Users/mac/Desktop/lock.lock"];while (![lock tryLock]){ sleep(1);} //do something[lock unlock]; 但在实际使用过程中,当执行到do

深入理解Linux操作系统守护进程的意义

Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.linux系统有很多守护进程,大多数服务器都是用守护进程实现的.同时,守护进程完成许多系统任务,比如,作业规划进程crond.打印进程lqd等.有些书籍和资料也把