> Поэтому я и пытаюсь их прибить до выхода, но я даже не
> знаю кого.Можно поддержиавать в актуальном состоянии список всех детей.
После каждого порождения, добавлять его PID в список:
CHILDERN_PIDS="$CHILDERN_PIDS $!"
https://stackoverflow.com/questions/2618403/how-to-kill-all-...
Можно узнавать список "всех детей" непосредственно перед прибиванием.
CHILDERN_PIDS=$(ps -o pid= --ppid $$)
Потом по CHILDERN_PIDS можно итерировать в простом цикле for.
Делать отдельно в каждом поколении в отношении непосредственных детей, либо рекурсивно из "дедушки".
Тут хорошо описанно:
https://unix.stackexchange.com/questions/124127/kill-all-des...
Должно работать если:
1. Дети есть строго дети, в терминах иерархии процессов, а не демонизированные сироты.
2. Дети успевают сделать что-то осмысленное после того как их прибивают и до, собственно, умирания.
Рекурсия из дедушки, в отличии от отдельной итерации в каждом поколении, смягчает ограничение 2.
> Думал на тему того, чтобы передавать пиды внучек через
> диск. но что-то и так уже слишком много файлов генерирую.
Не такой уж и порочный путь. Если написать некий диспетчер для отслеживания всего дерева, то можно будет отличать служебные файлы от временных данных и бардак станет более контролируемым.