Para executar o script duas vezes por dia:
0 0,12 * * * sleep $(( $$ \% 21600 )); /path/to/script.sh
Isso iniciará o trabalho ao meio-dia e à meia-noite e, em seguida, suspenderá por até 6 horas (metade do intervalo de 12 horas) antes de iniciar o script.
Para executar o script 3 vezes por dia:
0 0,8,16 * * * sleep $(( $$ \% 14400 )); /path/to/script.sh
Isso iniciará o trabalho à meia-noite, às 8h e às 16h e depois durará até quatro horas (metade do intervalo de oito horas) antes de iniciar o script.
Desde que você marcou isto com o Ubuntu, você provavelmente tem o bash como padrão / bin / sh, que parece interpretar $ RANDOM (apesar de RANDOM não ser especificado pelo POSIX), então para maior imprevisibilidade, ajuste a resposta de Zwans para:
2 execuções por dia:
0 0,12 * * * sleep $(( RANDOM \% 21600 )); /path/to/script.sh
3 execuções por dia:
0 0,8,16 * * * sleep $(( RANDOM \% 14400 )); /path/to/script.sh
Alterei o &&
para ;
, que altera o significado de "aguarde até que o comando suspender saia com êxito" para "dormir por algum tempo, independentemente de o sono ter sido concluído ou ter sido eliminado". Observe também que o %
precisa ser escapado quando faz parte de um comando cron, caso contrário, ele é interpretado como uma nova linha.