Как убить все подгруппы, но не убивая ток -процесс оболочкиLinux

Anonymous
Как убить все подгруппы, но не убивая ток -процесс оболочки

Сообщение Anonymous »

Я хочу убить все суб -процессы, начатые в текущей оболочке рекурсивно , но не убивайте сам текущий процесс оболочки.

Код: Выделить всё

#!/bin/bash

echo "Start all child processes in background"

(long_running_process_1.sh &)
(    long_running_process_1.1_started_by_long_running_process_1.sh &)
(    long_running_process_1.2_started_by_long_running_process_1.sh &)
(    long_running_process_1.3_started_by_long_running_process_1.sh &)
(long_running_process_2.sh &)
(    long_running_process_2.1_started_by_long_running_process_2.sh &)
(    long_running_process_2.2_started_by_long_running_process_2.sh &)
(    long_running_process_2.3_started_by_long_running_process_2.sh &)
(long_running_process_3.sh &)
(...)
(long_running_process_n.sh &)

echo "Kill all subprocesses started within this shell"

how_to_kill_all_subprocesses_here "?"

echo "All sub processes have been killed!"
echo "Continue to run other commands"
echo "Hello world"
< /code>
Я попробовал "pkill
"или" «Метод, упомянутый в следующем сообщении, но он убивает саму оболочку, которая не ожидается: https://unix.stackexchange.com/question ... ash-script написал/>>

Код: Выделить всё

pkill -P $$
# or
pstree -A -p $$ | grep -Eow "[0-9]+" | xargs kill
< /code>
Я попытался получить результат, а затем анализировать результат, но я не могу правильно установить результат: < /p>
# This only get a subshell $$ not current shell $$
result="$(pstree -A -p $$ | grep -Eow "[0-9]+")"
< /code>
Как реализовать команду "how_to_kill_all_subprocesses_here
"в сценарии Demo Bash?

Подробнее здесь: https://stackoverflow.com/questions/796 ... ll-process

Вернуться в «Linux»