Tenho uma rotina que roda em background no cron. A dita entra a cada 60 minutos, ou de hora em hora.
Preciso criar um "[*****]ômetro" ou cronômetro regressivo que dentro do loop precisa ir regredindo até quando faltarem 2 minutos para a nova entrada do cron.
Pegar o momento em que o cron é disparado eu sei, o problema é como criar esta variável para ir decrementando seu valor até faltarem 2 minutos.
Já andei pesquisando sobre o assunto, mas só encontrei bons tutoriais sobre o cron:
Tem de tudo, até como retirar o serviço do ar. Mas não encontrei nada referente a cronômetros regressivos.
O script que estou rodando é super pesado e faz gravações e leituras intermitentes. Costuma deixar a memória meio suja e descarregar o danado é importante. Ele chama em bg outros 200 a 500 serviços. Depende do momento e da hora. Percebi que descarregar eles da memória dentro de um período de 60 minutos será suficiente para evitar gargalos.
O que estou imaginando é mais ou menos assim.
Dentro do loop while principal, fazer uma chamada para um função que vai verificar o tempo decorrido desde o momento que foi iniciado. Deverá ler algum parâmetro que indicará o tempo ou contador para sair do ar. Se este número for inferior ao parâmetro x ou y, deverá disparar as rotinas de encerramento que vai providenciar várias limpezas.
A ideia é que acabe tudo antes que o novo cron entrar no ar. Lembrando que ele entra a cada 60 minutos.
Estou bem perdido pra falar a verdade em como devo fazer esta rotina regressiva.
Estou pensando em converter a data para segundos desde 1970 ( date "+%s" que devolve 1336748357) , onde imagino que seja meu start. Agora qual o valor futuro com 60 minutos a frente ?
Qual a melhor forma de fazer estes contadores ? O caminho seria este mesmo ?
Editado: 12:12
A dica do @fdmarp deu uma luz, mas ainda não é o que preciso. Nem sempre será de 60 minutos. Estou dando este exemplo com 60 minutos.
#/bin/sh
# ROTINA DE VARIACAO DE SEGUNDOS ENTRE DUAS DATAS
# Codigo pertence a Comunidade
# VOL (Viva o Linux)
#-------------------------------------------------------
# Primeira versao: Davison Pasqualini
# 30/12/2009 fdmarp
#-------------------------------------------------------