Você pode fazer isso:
sleep $(($(date --date="14-JAN-2015 17:00" +%s) - $(date +%s)))
run command ...
onde 14-JAN-2015 17:00
é a data e a hora que você quer esperar até.
Para executar a cada cinco minutos, você pode considerar que os segundos retornados por date
serão um múltiplo de 300 em limites de 5 minutos, portanto, calculará a diferença entre agora e o próximo limite de cinco minutos (retornando entre 0 e 299):
timeNow=$(date +%s)
sleepTime=$(( ( ( $timeNow + 299) / 300 * 300 ) - $timeNow ))
sleep $sleepTime
Se date +%s
não estiver disponível, tente:
timeNow=$(awk 'END { print systime() }' /dev/null)
Adicionando: também trabalhei com:
perl -e 'print time(), "\n" '