Como obter um feedback mais preciso sobre quando um programa é encerrado?

4

Estou executando algum software que demora um pouco para sair. Ele deve gravar alguns arquivos de banco de dados grandes.

Eu observei que, se eu executar o software de dentro de xterm , quando pressionar "quit", o nome do aplicativo desaparecerá do painel, mas levará um pouco mais de tempo antes que xterm me retorne ao prompt Eu posso digitar qualquer comando adicional.

Eu preciso saber quando o aplicativo foi encerrado com sucesso e completamente, para que eu não quebre o banco de dados encerrando o Xorg muito rapidamente, mas executar o programa a partir de xterm é completamente impraticável.

  • Existe um meio alternativo de receber feedback preciso sobre quando um programa foi encerrado com êxito, o que não envolve o lançamento de dentro de xterm ?
por Village 05.02.2014 / 03:51

1 resposta

4

Método 1 - usando o relógio

Uma ideia seria usar o comando watch para executar um comando de loop de 2 segundos, talvez algo como pgrep ... ou ps .. .

$ watch "pgrep -l sleep"

Onde "sleep" é o processo do meu stand-in que eu quero assistir para ver se está terminado. A saída ficaria assim:

Every 2.0s: pgrep -l sleep             Tue Feb  4 22:07:31 2014

24925 sleep

Quando terminar, ficaria assim:

Every 2.0s: pgrep -l sleep             Tue Feb  4 22:07:31 2014

Método 2 - usando espera

Você também pode usar a mesma abordagem que descrevi neste Q & A intitulado: " Posso de alguma forma adicionar um" & prog2 "a um prog1 já em execução? ". A técnica funcionaria para você aqui se você invocasse sua ferramenta GUI assim:

$ my_database_tool &
[1] 17440

$ wait 17440 && echo "It's done"

...after it's finished...

[1]+  Done                    my_database_tool
It's done
    
por 05.02.2014 / 04:08

Tags