Убить подпроцесс в 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

Используя информацию позже, вы можете создать более простой инструмент, ориентированный только на детей.

Другие вопросы по тегам