监控进程,线程shell脚本

脚本范例

#!/bin/bash
#this script is for check process

NUM_VEN=`ps aux | grep ventilator.py | grep -v grep | wc -l`
NUM_FTP=`ps aux | grep ftpsender.py | grep -v grep | wc -l`
NUM_WORKER=`ps aux | grep worker.py | grep -v grep| wc -l`

cd $(dirname $0)

kill_process()
{
    ps aux | grep $1 | grep -v grep | awk '{print $2}' | xargs kill -9
    sleep 1
}

start_worker()
{
    for((i=0;i<$1;i++))
    do
        nohup python ./worker.py &
        sleep 1
    done
}


move_file()
{
    mv /notebooks/ai_mos_8.1/ai_mos/backtracking/* /notebooks/VOLTE_SLICE_GM
}

TIME=`date +%H`

if [ "$TIME" -ge 9 -a "$TIME" -lt 19 ]
then
    echo "no check"
    exit 1
fi

if [ $NUM_FTP -lt 1 ]
then
    kill_process ftpsender.py
    kill_process worker.py
    kill_process ventilator.py
    move_file
    nohup python ./ftpsender.py &
    sleep 5
    start_worker 6    
    sleep 2
    nohup python ./ventilator.py &
elif [ $NUM_WORKER -lt 6 ]
then
#    kill_process worker.py
    START_NUM=$((6-$NUM_WORKER))
    if [ $NUM_WORKER -eq 0 ];then
        kill_process ventilator.py
                move_file
        start_worker $START_NUM
        nohup python ./ventilator.py &
    else
        start_worker $START_NUM
    fi
    sleep 2
    if [ $NUM_VEN -eq 0 ];then
                move_file
        nohup python ./ventilator.py &
    fi
elif [ $NUM_VEN -lt 1 ]
then
    kill_process ventilator.py
    move_file
        nohup python ./ventilator.py &
else
    echo "every thing is ok"
fi

修改之后,实现监控work的六个线程和ventilator.py一个进程

#!/bin/bash
#this script is for check process

NUM_VEN=`ps aux | grep ventilator.py | grep -v grep | wc -l`
NUM_WRITE=`ps aux | grep write_worker.py | grep -v grep | wc -l`
NUM_WORKER=`ps aux | grep worker.py | grep -v grep| wc -l`

cd $(dirname $0)

kill_process()
{
    ps aux | grep $1 | grep -v grep | awk '{print $2}' | xargs kill -9
    sleep 1
}

start_worker()
{
    for((i=0;i<$1;i++))
    do
        nohup python ./write_worker.py  $i >/dev/null 2>&1 &
        sleep 1
        nohup python ./worker.py >/dev/null 2>&1 &
        sleep 1
    done
}

if [ $NUM_WORKER -lt 6  -a  $NUM_VEN -lt 1]
then
    kill_process ventilator.py
    kill_process worker.py
    kill_process write_worker.py
    start_worker 3    
    sleep 2
    nohup python ./ventilator.py >/dev/null 2>&1 &

else
    echo "every thing is ok"

注明:写的一般,反正够用,仅供平日参考

原文地址:https://www.cnblogs.com/hanjianfei/p/14000425.html