shell sleep até o próximo minuto completo

3

Para executar um script no próximo minuto inteiro, quero dizer ao comando sleep para dormir até o próximo minuto completo. Como posso fazer isso?

    
por nnn 06.04.2015 / 20:40

2 respostas

10

Peça a data em segundos: date +%s e calcule o lembrete do devision com 60 (modulo: % ). Se você calcular 60 menos o módulo, você recebe os segundos restantes para o próximo minuto completo. Você pode alterar isso para aguardar até a próxima hora completa (alterar de 60 a 3600).

sleep $((60 - $(date +%s) % 60)) &&
<yourscript>

Para apenas dormir até o próximo minuto inteiro, você pode até diminuí-lo (sem o módulo):

sleep $((60 - $(date +%S) )) &&
<yourscript>

Esteja ciente também desta pergunta e resposta: dormir até a próxima ocorrência de tempo específico .

    
por 06.04.2015 / 20:40
0

sleep $(( 60 - 10#$(date +%S) )) dorme até o próximo minuto completo. Não esqueça o prefixo 10# ! Caso contrário, seu código interpretará "08" e "09" como referências inválidas para um número octal.

Ou você pode impedir que o comando date preencha os segundos com '0' seguindo o '%' com '-' sleep $(( 60 - $(date +%-S) ))

    
por 23.04.2018 / 23:00

Tags