记录系统进程异常脚本

   今天中午突然收到nagios的报警,有2台服务器的process超出了阀值,而且那几分钟内都飚得很高,因为当时临时有点事,稍等了会上服务器后一看,没发现啥错误日志,也不知道是哪个程序导致的,这就比较郁闷了,所以写了比较简单的记录日志的脚本,以防止以后再飚起来还是无法查找原因。

脚本如下:

  
  
  
  
  1. #!/bin/bash 
  2. #monprocess.sh 
  3. #此脚本主要用来判断在主机中的进程突然增大时,是哪个程序导致的,并且在发现此问题时可以及时的通知到运维人员。 
  4. host=`hostname` 
  5.  
  6. Mailto="[email protected]" 
  7.  
  8. procnum="200" 
  9.  
  10. if [ `ps -ef |wc -l` -gt $procnum ];then 
  11.      
  12.      ps -ef |awk '{a[$8]++}END{for(i in a){print a[i],i}}'|sort -rn |head -15 >/root/process.log 
  13.  
  14.      echo -e "$host's process more than $procnum" |mail -s "Process is beyond the threshold in `date '+%m/%d/%Y %H:%M'`" $Mailto 
  15.  
  16. fi 

#报警的只是附带的,主要是记录下当时进程的日志,方便我们在接到报警后,登陆上去后查看是什么哪个程序导致的,也方面查找一些原因。当然也可以在程序后面
添加判断,判断如果是我们的的生产程序出了故障导致,可以直接kill掉程序,然后等确认kill完毕后,再重启服务。如果不是主程序的,那就退出或直接Kill。当然
只是建议。

你可能感兴趣的:(shell,职场,process,休闲)