Como executar um script 2 com um em segundo plano seguido por outro

0

Eu tenho um script que vincula a um processo em segundo plano. Agora eu quero executar o segundo script seguido pelo primeiro (que inicia o processo em segundo plano) juntos.

Também é possível adicionar um comando de saída no final para que, quando o segundo processo estiver concluído, o processo em segundo plano seja encerrado automaticamente.

Exemplo: script1

#!/bin/tcsh
#
background process &
#

uma vez que está em execução

script2:

#!/bin/tcsh
#
matlab <program.m>
#

Finalize o processo quando o script 2 for concluído. Como?

Obrigado antecipadamente

    
por vivekkr0611 22.01.2016 / 15:01

1 resposta

1

Estou assumindo quando você afirma que deseja que eles comecem "juntos", o que você quer dizer com proximidade relativa um do outro. Para isso, basta executar os scripts na ordem em que você deseja uma linha após a outra.

#!/bin/bash
./script2.sh &
.script1.sh

Para capturar o final do processo em segundo plano, você deverá armazenar o PID do primeiro. Para fazer isso, coloque o processo de script em segundo plano e armazene $! em uma variável local.

Se você quiser também matar o processo em segundo plano ao matar o script em primeiro plano, use a função trap do Bash. Passe uma função ou um bloco de código que você deseja executar e os sinais que você gostaria de capturar.

#!/bin/bash
./script2.sh &
SCRIPT_2_PID=$!
trap "kill $SCRIPT_2_PID; exit" SIGHUP SIGINT SIGTERM
./script1.sh

Por favor, note que a função trap substitui a resposta típica aos sinais fornecidos, então se você quiser que o script saia em CTRL + C você precisará incluir o exit .

    
por 22.01.2016 / 16:39