Код: Выделить всё
#!/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
Код: Выделить всё
pstree
Код: Выделить всё
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
Подробнее здесь: https://stackoverflow.com/questions/796 ... ll-process