Preciso de uma série de comandos ou de um único comando que durma até a próxima ocorrência de um horário específico como "4:00".
Como eu faria isso?
O at
comando ou um cronjob não é uma opção porque não devo deixar o script em que estou atualmente.
O caso específico de que estou falando é um script em execução na tela. É muito importante que eu não pare a execução do script pelo próprio script, pois existem muitas variáveis importantes necessárias em algum momento do script. O script nem sempre deve ser executado regularmente. Ele só precisa ser executado em um horário específico.
Seria muito benéfico se o script tivesse que criar arquivos ou outras tarefas, como cronjobs ou outras telas. Isso é simplesmente uma questão de design.
Eu só tive uma ideia incrível:
difference=$(($(date -d "4:00" +%s) - $(date +%s)))
if [ $difference -lt 0 ]
then
sleep $((86400 + difference))
else
sleep $difference
fi
Você tem alguma idéia melhor?
Mais informações serão adicionadas, se solicitado!
date -d
por date -j
e substituir 4:00
por 0400
.