Você não pode "esperar" por processos não-filhos e precisa verificá-los manualmente. Veja, por exemplo, esta resposta de estouro de pilha .
Estou executando um comando que está processando alguns dados em uma janela do shell (digamos que tenha pid 200). Infelizmente esqueci de adicionar o & para executá-lo em segundo plano.
Eu preciso executar algum script de análise após o término do pid 200. Eu pensei que poderia apenas abrir outra janela do shell e fazer
wait 200; ./myanalysis.sh
Mas me queixa
"-bash: wait: pid 200 is not a child of this shell"
Com isso em mente, existe uma maneira de executar meu script de análise automaticamente depois que esse processo termina?
Você não pode "esperar" por processos não-filhos e precisa verificá-los manualmente. Veja, por exemplo, esta resposta de estouro de pilha .
Você pode usar ^ z e fazer o seguinte?
wait 200; ./myanalysis.sh&
fg %1
Isso irá esperar até que pid 200
termine, então execute sua análise e, em seguida, coloque-se em primeiro plano.
Tags command-line bash shell