Контекст:
Пользователи предоставляют мне свои собственные скрипты для запуска. Эти сценарии могут быть любого типа, такие как сценарии для запуска нескольких программ с графическим интерфейсом, внутренних служб. Я не контролирую, как пишутся сценарии. Эти сценарии могут быть блокирующего типа, т.е. выполнение ожидает завершения всех дочерних процессов (программ, запускаемых последовательно)
#exaple of blocking script
echo "START"
first_program
second_program
echo "DONE"
или не блокирующий тип, то есть те, которые обрабатывают дочерний процесс в фоновом режиме и выходят из чего-то вроде
#example of non-blocking script
echo "START"
first_program &
second_program &
echo "DONE"
Чего я пытаюсь достичь?
Предоставленные пользователем сценарии могут быть любого из двух указанных выше типов или сочетанием обоих. Моя задача - запустить скрипт и подождать, пока все запущенные им процессы не завершатся, а затем завершить работу узла. Если это блокирующий тип, то дело простое, то есть получите PID процесса выполнения скрипта и подождите, пока ps -ef | grep -ef PID больше не будет иметь записей. Неблокирующие скрипты доставляют мне неприятности
Есть ли способ получить список PID всех дочерних процессов, созданных при выполнении сценария? Любые указатели или подсказки будут высоко оценены