O erro é provavelmente depender do sono para um tempo absoluto, em vez de um tempo relativo. As coisas antes do sono podem levar uma quantidade variável de tempo.
Depois de remover as repetições de código, talvez eu use at
em um loop ou, mais provavelmente, use mais sofisticadamente o uso de cron
.
Se tempos de início exatos não fossem importantes, eu chamaria duas funções seqüencialmente em um loop simples. Combinando os dois scripts.