Я никогда не видел реализацию cron, в которой есть способ запустить задание в случайное время. Это странное требование. Как указано в документации, 9-12
это ярлык 9,10,11,12
, и означает каждый час с 9 до 12.
Если вы хотите запустить задание в произвольное время, запустите задание в начале интервала и добавьте случайную задержку. Например, чтобы запустить в произвольный час между 9 и 12:
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM % 4))); do_stuff
Обратите внимание, что RANDOM
требуется bash или ksh, он может быть недоступен в оболочке по умолчанию.
Если вы хотите работать в случайное время между 9 и 12, со вторым разрешением, вы можете использовать RANDOM % 10800
в качестве задержки, но, поскольку оно RANDOM
находится в диапазоне 0..32767, будет смещение в сторону задержек между 0 и 32768%. 10800 = 368. Чтобы избежать этого смещения:
SHELL=/bin/bash
0 9 * * * max=$((32768/10800*10800)); while delay=$RANDOM; ((delay > max)); do :; done; sleep $((delay % 10800)); do_stuff
--randomwait
аргумент для yum или--splay
аргумент для chef-клиента), но для тех, которые этого не делают, случайное время выполнения было бы полезной функцией в планировщике заданий.