因为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
这篇博客介绍了由于Java跨平台的特性,没有直接的setpgid方法来结束进程,因此采用了一种通过shell脚本的方式,递归查找并杀死指定PID的Java进程及其子进程。文中给出了具体的bash脚本实现,并展示了在Kotlin中获取Java进程PID的方法。

被折叠的 条评论
为什么被折叠?



