Убить подпроцесс в Ubuntu НЕ родительский?
Я хочу убить процесс в Ubuntu.
У меня установлена Java и работает JBOSS & Tomcat в фоновом режиме. Мне нужно убить Tomcat после развертывания, но когда я убью его, JBOSS тоже собирается.
Я должен был использовать
kill -9 pidofjava
killall tomcat
Но статус все тот же.
Что мне нужно сделать, чтобы убить атрибут процесса? Я имею в виду подпроцесс?
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
Вы также можете убить с помощью идентификатора сеанса, но это - родитель и дети.
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
Используя информацию позже, вы можете создать более простой инструмент, ориентированный только на детей.