1、在/home/xxx/scripts路径下新建akill文件,并将权限修改为755
2、编辑akill文件,内容如下
#!/bin/bash
if [ $# -eq 0 ];then
echo "Error: no pid specified!"
exit 1
fi
function kill_pid
{
pid=$1
ps -p $pid > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -ne 0 ];then
echo "Warning: pid ${pid} not exit!"
else
pstree -pl $pid | awk -F "[()]" '{for(i=0;i<=NF;i++) if($i~/[0-9]+/) print $i}' | sed '/[|+-]/d' | xargs kill -9 > /dev/null 2>&1
echo "Info: pid $pid was killed recursively!"
fi
}
while [ $# -ge 1 ]
do
kill_pid $1
shift 1
done
3、添加环境变量
我使用的是csh,在~/.cshrc里面添加 setenv PATH {$PATH}:/home/xxx/scripts
4、akill使用
(1)先ps查看要kill的进程
(2)akill pid
如上图,ps时可以看到spyglass的pid=3141,但会关联到3137、3207、3442,在执行akill 3141后,直接递归将3141、3137、3207、3442全部杀掉了。
如果直接使用kill会有进程残留