LINUX SHELL 脚本实现进程监护

LUNUX下一个用脚本实现的简单看门狗程序, 可以完成对指定进程的重启\定时查杀,如果你有这方面的需要,只要稍修改就可使用. 贴出来分享一下

上脚本:

#!/bin/bash -

######################脚本配置项################################################
process_name=WorkerMan                                      #进行查杀的进程名称
processd="php /var/www/workerman-chat/start.php start -d"   #进程启动的命令
enable_start_processd=1                                     #是否启用"进程启动",在启用状态下如果发现进程不存了,那么将执行进程启动命令. 如果值为0将不启用
iTimeDur=20                                                        #多长时间执行一次KILL 单位秒,每次只杀一个进程
#################################################################################


sleep_time=10    #脚本运行SLEEP时间
while_times=0    #一次任务执行的循环计数
declare -a PROCESS_ARY


#if [ $# -lt 1 ]
#then
#  echo "缺少参数:procedure_name"
# exit 1
#fi

#主循环开始

while true
do
#如果数组中没有元素,统计进程运行的数目
     echo "the  process number [  ${#PROCESS_ARY[*]} ]" 
        if [ ${#PROCESS_ARY[*]} -eq 0 ];then
          PROCESS=`ps -ef|grep $process_name|grep -v grep|grep -v PPID|awk '{ print $2}'`
   
      x=0
      for j in $PROCESS
      do
        PROCESS_ARY[x]=$j      
        echo "the  process [ ${PROCESS_ARY[x]} ]"
        x=$[x+1]
      done
    
#没有进程了可能要进行启动
      if [ ${#PROCESS_ARY[*]} -eq 0 ] && [ $enable_start_processd -eq 1 ];then
            $processd
      fi
    else            
#存在进程, 就杀掉一个 (`expr $while_times \*$sleep_time`)
      totaltime=$[while_times*sleep_time]
      echo  "totaltime = $totaltime"
          if [ $totaltime -ge $iTimeDur ] && [ ${#PROCESS_ARY[*]} -gt 0 ];then
         iIndex=$[${#PROCESS_ARY[*]}-1]
             echo "Kill the $process_name process [${PROCESS_ARY[iIndex]}]"
             kill -9 ${PROCESS_ARY[iIndex]}
             unset PROCESS_ARY[iIndex]
             while_times=0
          fi     
    
        fi
    
    while_times=$[while_times+1]
    sleep $sleep_time

done

#主循环结束

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值