BASH: vincular a existência do programa a outro programa

1

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.

    
por Jonah 07.05.2012 / 19:40

2 respostas

5
#!/bin/bash

cmd-a &
a=${!}

cmd-b &
b=${!}

wait $a
kill $b

Eu usei yes a e yes b como comandos ao testar isso.

    
por 07.05.2012 / 19:53
3

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
    
por 07.05.2012 / 19:45