linux进程守护脚本

# !/bin/bash 
# filename:keep.sh
# author:sam

cmdself=$0
echo "self cmd $cmdself"

cmdfilename=${cmdself#*/}
echo "self name $cmdfilename"

nodestr='node';
#要检测的命令名
processname='mftapfish';
# 获取时间并格式化
LOCAL_TIME=$(date +"%Y-%m-%d %H:%M:%S")     

while true 
do
   #不能通过过滤color来统计,要过滤grep,很多出错在此
   #sshd_count1=`ps -ef | grep $processname | grep -v color | wc -l`
   #echo "curr process num1: $sshd_count1"

   sshd_count=`ps -ef | grep $processname | grep -v grep | wc -l`       # 查看有多少ssh服务
   echo "curr process num: $sshd_count"

   if [ $sshd_count -lt 1 ]
   then 
       echo $LOCAL_TIME $processname 'not find service, restart' 
       #systemctl start sshd
       #$PWD/run.sh
       if [[ $processname == *$nodestr* ]]
       then
         nohup $processname &
         echo 'restart:' $processname
       else
         nohup ./$processname &
       fi
   else 
        echo $processname 'running ...'
  fi 

   sleep 5  # sleep,Shell关键词。数字5表示沉睡5秒,每隔5秒检查一次 
done


版权声明:本文为scdnzzb原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。