“Threading” em scripts do shell

3

Eu tenho uma situação em que preciso:

  1. Faça algumas configurações de preâmbulo no Script A
  2. Inicie os scripts B, C, D e E juntos, para que eles sejam executados simultaneamente
  3. Quando todos os quatro scripts tiverem saído, faça algumas limpezas no Script A

No momento, tenho executado sinalizadores em scripts B-D que definem se o script ainda está em execução ou não, e depois de disparar os quatro scripts, o script A fica em um loop de espera verificando esses arquivos de sinalização.

Existe uma maneira melhor de fazer isso?

O segundo plano é um script de backup para um servidor AIX usando capturas instantâneas - o script A pega as capturas instantâneas JFS2 nos sistemas de arquivos que desejamos fazer backup (todos precisam ser feitos ao mesmo tempo, pois relacionamos dados distribuídos em diferentes sistemas de arquivos - isso não pode ser alterado), scripts B - D fazem os backups reais desses sistemas de arquivos dos snapshots (três rsyncs para um servidor diferente e um backup de fita) e, em seguida, o script A remove os snapshots quando todas as cópias (incluindo a fita) estão concluídas.

    
por Moo 05.08.2009 / 10:36

1 resposta

7

Com o bash, você pode fazer isso:

init # do the preamble setup of script A

scriptB & # start in background
scriptC & # start in background
scriptD & # start in background

wait # wait for all background jobs to finish

cleanup # do the cleanup part of script A
    
por 05.08.2009 / 10:41