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.