Você pode usar o script abaixo como um controlador de wrapper. Eu assumo bash é conhecido, então não há comentários técnicos. Eu 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 redefine a contagem regressiva para o último tempo de mensagem de InvetoryOpt: Finished
, apenas verifica a cada 30 minutos. Eu posso pensar em uma maneira de melhorar isso se você precisar.
ATUALIZAÇÃO: Armadilha adicionada.
#!/usr/bin/env bash
trap '
kill %1
rm $OUT
exit
' 2
#provide the program command below
PROGRAM=
#provide the other script below
OTHER_SCRIPT=
PHRASE="InvetoryOpt: Finished"
INTERVAL=1800
OUT=/tmp/out$$
message () {
echo "$(basename "$0")": "$1"
}
start_app () {
eval "$PROGRAM | tee $OUT &"
}
action () {
if ! grep -q -e "$PHRASE" $OUT
then
message "Check failed. Restarting." >&2
kill %1
eval "$OTHER_SCRIPT"
start_app
else
message "All fine."
fi
> $OUT
}
start_app
while true
do {
sleep $INTERVAL
action
}
done