Ok, tenho um dilema que venho encarando há muito tempo. Eu tentei a maioria das soluções on-line, mas elas não funcionaram muito bem ...
Eu tenho um arquivo shell. Vamos chamá-lo "a". "a" parece muito com isso:
#a.sh
sh b.sh &
sh c.sh &
b.sh e c.sh são muito parecidos com isto:
#b.sh
run a process
run this opensource software over these files and wait
if condition; do
sh e.sh
else
f.sh
fi
e depois c.sh:
#c.sh
call some other programs
call some python files
call these shell files
... etc
É claro que f.sh
e e.sh
são semelhantes e executam seus próprios processos e outras coisas.
Agora, como você pode ver, quando eu executo o "a.sh", ele executa uma infinidade de outras coisas. Eu pressiono Ctrl + C , e os processos ainda estão sendo executados em segundo plano. Eu fecho o terminal; mesma coisa. Eu tentei matar com ID, mas eu não sei como fazer isso por muito do software de código aberto que estou usando. Especificamente, tentei, por exemplo, esta sugestão , mas como Eu faço a.sh
conhecer os diferentes processos que estão sendo executados no e.sh e assim por diante, para matá-los? Não está funcionando, eu te digo.
Existe um comando que me permite finalizar todos os processos iniciados por um arquivo shell? Eu sei que isso é tão irritante, mas não posso compartilhar o código a partir de agora. Se você realmente precisa de mim, posso postar algo parecido, mas mais uma vez, muito do que estou fazendo é rodar software baseado em certas condições e o software e os arquivos de shell não fecham quando clico em Ctrl + C . Então, sou forçado a pkill -U myuser
, mas isso é impraticável.