Nunca he visto una implementación cron que tenga una manera de ejecutar un trabajo en un momento aleatorio. Es un requisito extraño. Como dice la documentación, 9-12
es un acceso directo para 9,10,11,12
, y significa cada hora de 9 a 12.
Si desea ejecutar un trabajo en un momento aleatorio, ejecute el trabajo al comienzo del intervalo y agregue un retraso aleatorio. Por ejemplo, para ejecutar a una hora aleatoria entre 9 y 12:
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM % 4))); do_stuff
Tenga en cuenta que RANDOM
requiere bash o ksh, es posible que no esté disponible en el shell predeterminado.
Si desea ejecutar un tiempo aleatorio entre 9 y 12, con una segunda resolución, puede usarlo RANDOM % 10800
como retraso, pero debido a que RANDOM
está en el rango 0..32767, habrá un sesgo hacia retrasos entre 0 y 32768% 10800 = 368. Para evitar este sesgo:
SHELL=/bin/bash
0 9 * * * max=$((32768/10800*10800)); while delay=$RANDOM; ((delay > max)); do :; done; sleep $((delay % 10800)); do_stuff
--randomwait
argumento para yum o--splay
argumento para chef-cliente), pero para aquellos que no lo tienen, un tiempo de ejecución aleatorio sería una característica útil para tener en un programador de trabajos.