#!/bin/bash
cmd-a &
a=${!}
cmd-b &
b=${!}
wait $a
kill $b
Eu usei yes a
e yes b
como comandos ao testar isso.
Eu quero criar um script que execute dois programas. Essa parte é simples, mas há um problema: eu quero matar o segundo se o primeiro sair. Como posso fazer isso?
Editar
Eu tentei matar o programa pelo PID depois que o outro saiu, mas o programa é hamster-time-tracker
, que é um aplicativo Python que sai imediatamente, aparentemente gerando outro processo. Como posso resolver isso? Existe alguma maneira de obter o outro PID gerado?
Editar 2
Descobri isso. Tive que executar python /usr/bin/hamster-time-tracker
em vez de hamster-time-tracker
e ele ficou em execução.
Há o comando aguarde no bash para aguardar o término do primeiro aplicativo e, em seguida, matar o segundo aplicativo.
Como as esperas são inseridas automaticamente depois que os comandos não terminam com &, a ordem correta pode evitar que você entre no problema de espera manual:
A &
B # waits
kill $! # then kills A
Tags bash shell application