shell脚本start.sh和stop.sh之kill多进程

python多进程start.sh和stop.sh


start.sh先kill相关重复进程,再start:

#!/bin/bash

ROOT_DIR='/home/xxx/xxx'
#grep命令的参数 -v 即反向查找,awk '{print $2}'  打印出第二列参数即所有过滤后进程的pid;
for N in `ps -ef | grep "$ROOT_DIR/test.py" | grep -v grep | awk '{print \$2}'`
do
        STOP="kill -9 $N"
        eval $STOP
done

sleep 1

echo "starting Cascade..."
START="nohup python $ROOT_DIR/test.py > /dev/null 2>&1 &"
eval $START
echo "done."

stop.sh,强制杀死进程,先查找多进程的pid是否存在(即是否运行),若存在则遍历kill并记入日志中,若不存在则输出The process did not start:

#!/bin/bash

ROOT_DIR='/home/xxx/xxx'

PID=`ps -ef | grep "$ROOT_DIR/test.py" | grep -v grep | awk '{print \$2}'`
if [ "$PID" ]
then
        echo "$(date -d today +"%Y-%m-%d %H:%M:%S") - Forced killing process $$ROOT_DIR/test.py"  >> "/home/xxx/logs/test.log"
	for N in `ps -ef | grep "$ROOT_DIR/test.py" | grep -v grep | awk '{print \$2}'`
do
        STOP="kill -9 $N"
        eval $STOP
done
echo "stoping Cascade..."

else
        echo 'The process did not start'
fi

注意:我们想要找出哪个进程的id

可以使用如下语段:

ps -ef | grep "mongod" | grep -v "grep" | awk '{print $2}'

你可能感兴趣的:(shell)