shell脚本实现任务超时监控

#!/bin/bash


#pid目录
dir=/data/pid
#定义多少分钟即算假死
sleep_time=$[10*60]
#定义grep的脚本名称
filter=/etc/sh/crontab


#列表
list=`ls ${dir}`
#现在的时间戳
now_time=`date +"%s"`


for I in $list
do
#判断是否纯数字
echo $I | [ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo 1 &>> /dev/null || continue
    #文件中的时间
    time=`cat ${dir}/${I}`
    #时间差
    dec_time=$[now_time-time]
    if [ $dec_time -gt $sleep_time ];then
        #查找相关进程
        process=`ps -A -opid,args | grep $I | grep ${filter} | grep -v grep `
    
        #脚本名称
        args=`echo $process | awk '{print $3}'`
        #如果进程不为空
        if [ ! -z $args ];then
            #中止进程
            kill $I &>> /dev/null
            #启动进程
            nohup /bin/sh $args & &>> /dev/null
#记录日志
echo "`date +%Y%m%d-%H:%M:%S` ${args}重新启动,超时时间为${dec_time}秒" &>> /var/log/monitor/monitor_overtime_nohup.log
        fi  


        #删除pid文件
        rm $dir/$I -rf 
    fi  
done
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS