Você pode usar um grupo de processos:
set -m
(
for part in input_*; do
(python3 "$part" || kill 0) &
done
wait
)
set -m
(e o recurso de shell POSIX opcional, necessário ao recurso de shell Unix) executa tarefas em seu próprio grupo de processos. Em bash
, yash
, zsh
, mksh
, são os jobs da subshell em que set -m
está habilitado, de forma que o% outer(...)
e todos os processos criados nele sejam colocados nesse mesmo grupo de processos.
Para dash
e outros shells baseados em ash
, isso só funciona no processo de shell de nível superior. Então, esse código funcionará, a menos que seja colocado em uma subcamada.
Isso não funcionará em AT & T ksh
ou no antigo shell SysV / Bourne.
kill 0
envia um sinal SIGTERM para todos os membros do grupo de processos atual.