我想在 Ubuntu 中终止一个进程。
我安装了 Java,并在后台运行 JBOSS 和 Tomcat。我需要在部署后终止 Tomcat,但当我终止它时,JBOSS 也会终止。
我不得不用
kill -9 pidofjava
killall tomcat
但状态依然是一样的。
我需要做什么才能终止进程属性?我的意思是子进程?
答案1
通常,进程会检查其子进程是否仍然存在,如果其中一个子进程中止,进程可能会自行关闭。
答案2
您可以循环遍历进程列表,识别具有相同父进程的子进程并逐个终止它们。
归因:http://www.unix.com/17901-post4.html
#!/bin/sh
while true
do
echo "Enter parent process id [type quit for exit]"
read ppid
if [ $ppid -eq "quit" -o $ppid -eq "QUIT" ];then
exit 0
fi
for i in `ps -ef| awk '$3 == '$ppid' { print $2 }'`
do
echo killing $i
kill $i
done
done
你也可以通过会话 ID 来终止进程,但这样会获取父进程和这些孩子。
https://serverfault.com/questions/40303/how-do-you-kill-a-process-tree-in-linux
ps -eo pid,ppid,sess,cmd -u ppetraki | grep whoami
pkill -9 -s SESS_ID
利用后者的信息,您可以构建一个仅针对儿童的更简单的工具。