Na situação atual, um determinado script 'chamando.sh' inicia outro script 'chamado.sh' em segundo plano, executa outras operações, dorme por um tempo e depois encerra 'chamado.sh' com a pkill called.sh
. Isso funciona bem.
Em seguida, também gostaria de iniciar o 'named.sh' de outros terminais como um script independente a qualquer outro momento, antes ou depois do lançamento do calls.sh. Essas instâncias independentes não devem ser eliminadas pelo 'chamando.sh'.
Como posso conseguir isso? A intuição diz que o script de chamada deve poder informar o processo iniciado a partir de outros nomes que estão sendo executados nesse meio tempo.
Como uma variante, 'Calling.sh' também pode iniciar 'Called', que é um link simbólico para 'Called.sh'. Isso complica o gerenciamento da situação acima? Quais cuidados e ajustes específicos são necessários para o uso de um link simbólico?
Respostas:
Não use o nome para matá-lo. Como o
calling.sh
script está chamando o processo que você deseja matar mais tarde, basta usar$!
(fromman bash
):Então, se você
calling.sh
é assim:Altere para este:
fonte
$calledPid
PID pai é o PID decalled.sh
.Eu tive que escolher isso, mas fora dos scripts, muitas vezes; é ainda mais divertido quando os scripts são chamados como parte de um agendamento automatizado complexo. Você realmente não deve confiar em algo como
pkill
selecionar qual script matar.Dentro de Call.sh, você deve registrar os PIDs dos trabalhos que você iniciou e matá-los explicitamente pelo PID.
Por dentro call.sh:
fonte