Depois de fazer o kill -- -$group_id
, espere que todos os processos terminem. Por exemplo, eu faria algo como
...
if [ ! -z "$group_id" ]; then
kill -- -$group_id
while pgrep -g $group_id &>/dev/null; do
sleep 1
done
success
...
Isso terá pgrep
de pesquisa para todos os membros do grupo de processos ( -g
) $group_id
. Normalmente, ele imprimirá todos os PIDs na tela, mas não queremos vê-los, então redireciono toda a saída para /dev/null
. pgrep
sairá com sucesso ( 0
) se encontrar pelo menos um processo correspondente aos critérios de pesquisa, o que manterá o loop while
em andamento. Uma vez que não encontre nenhum processo, ele sairá com um "falso" ( 1
), que sairá do loop e chegará à linha success
. Para não esmagar o sistema com um loop apertado, coloquei um sleep 1
lá.