Como iniciar um trabalho no horário preciso?

4

Eu quero começar um trabalho de gravação em um momento preciso. Pelo que entendi, o cron só garante que um trabalho seja iniciado dentro de um minuto.

Uma possível solução é iniciar o cron job mais cedo e aguardar até a hora exata. Que outras possibilidades eu tenho?

    
por Peter Hoffmann 21.02.2011 / 13:24

1 resposta

5

A maneira mais fácil é colocar o cron job para iniciá-lo minuto antes e depois adicionar tempo por conta própria.

Você também pode usar at . Pelo menos a página man de at diz que você pode usar um tempo bastante exato, incluindo segundos. Você pode testar isso adicionando at job que registra o tempo, por exemplo, o shell script executando

date > ~/at_test

Se você for com a rota cron, date +%s é seu amigo.

Por exemplo

#!/bin/bash
target_time=1298301898
let wait_time=target_time-'date +%s'
if [ $wait_time -gt 0 ]; then
 sleep wait_time
fi
# Execute your code

Com essa abordagem, seu próximo problema é descobrir como determinar target_time. Se você sempre sabe que quer iniciá-lo no próximo minuto, você pode usar

sleep 2 # Avoid running on xx:59, if cron starts immediately.
let wait_time=60-'date +%M'
sleep wait_time

para esperar até o minuto mudar.

    
por Olli 21.02.2011 / 13:41

Tags