欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

shell脚本杀掉指定进程下所有子进程(包括子进程的子进程)

程序员文章站 2022-07-01 14:10:54
搜索了网上好像并没有杀掉指定进程下所有子进程(包括子进程的子进程)的脚本,自己琢磨写了一版,虽说比较简单,但希望分享大家,帮助需要的人 ......

搜索了网上好像并没有杀掉指定进程下所有子进程(包括子进程的子进程)的脚本,自己琢磨写了一版,虽说比较简单,但希望分享大家,帮助需要的人

#!/bin/sh
# 递归找到进程最底层子进程并杀除.
mainname=$1
echo "=====开始====="
#grep -v可以过滤掉grep的进程,但测试时有时会出现问题,所以加上获取第一行
mainid=`ps -ef |grep ${mainname}|grep -v 'grep' |head -1|cut -c 9-15`
#也可以使用这种方法获取查出的第一个参数
#mainid=`ps -a |grep ${mainname}|awk '{print $1}'` #去掉空格 mainid=`echo ${mainid}|sed 's/ //g'` echo "mainid===${mainid}" #查主进程下所有子进程 格式为main.sh(275)---children1.sh(27641)---sleep(27643) pidline=`pstree -p ${mainid}` echo "pidline===pidline${pidline}" #取括号中的内容 pidline=`echo $pidline | awk 'begin{ fs="(" ; rs=")" } nf>1 { print $nf }'` #echo $pidline for pid in $pidline do echo "kill -9 ${pid}" kill -9 ${pid} done