因为java的历史原因,保障各个平台的兼容,所以java没有set pgid的方法,只能通过调用脚本的方式,递归kill进程。
#!/bin/bash
function findandkillchildren {
PIDS=`ps -ef |awk '{print $2 " " $3}' |grep $1 |awk '{print $1}' |grep -v $1`
for var in $PIDS
do
echo "$1 sub process is $var"
findandkillchildren $var
done
echo "start kill -9 $1"
kill -9 $1
}
findandkillchildren $1
echo "kill end $1"
java process获取pid的方式 (kotlin语法)
val f = cmdProcess.javaClass.getDeclaredField("pid")
f.isAccessible = true
pid = f.getLong(cmdProcess)
f.isAccessible = false