Portanto, devido a algumas escolhas de design muito ruins, estou preso a um aplicativo de console interativo complexo e insubstituível em execução para sempre em uma máquina Debian.
Este aplicativo executa algumas tarefas, repetidamente, e retorna a stdout
resultados como:
InvetoryOpt: Finished
PBridged: Finished
FLoot: ERROR
Preciso ter certeza de que a cada x minutos recebo a string InvetoryOpt: Finished
na saída do programa. Caso contrário, preciso matá-lo, executar outro script, iniciar o programa novamente e verificar.
Como posso fazer isso? Eu estava pensando expect
, mas não tenho muita experiência com e não tenho certeza se sou capaz de verificar se a saída corresponde à string a cada x minutos.
Notas:
- O programa também gera muitos outros tipos de lixo com os quais não me importo;
- O programa pode produzir a mesma string
InvetoryOpt: Finished
várias vezes em 30 minutos ou simplesmente não produzir nada. Portanto, seguir o final de um arquivo não funcionará porque corresponderia à última saída dessa string.
Obrigada.
Você pode usar o script abaixo como um wrapper-controller. Presumo que o bash seja conhecido, portanto, sem comentários técnicos. Posso adicioná-los se você quiser.
As variáveis PROGRAM e OTHER_SCRIPT para o script que você mencionou precisam ser definidas.
O controle de tempo é rígido, ou seja. ele não zera a contagem regressiva para o
InvetoryOpt: Finished
tempo da última mensagem, apenas verifica a cada 30 minutos. Posso pensar em uma maneira de melhorar isso, se você precisar.ATUALIZAÇÃO: Armadilha adicionada.