Для запуска сценария 2 раза в день:
0 0,12 * * * sleep $(( $$ \% 21600 )); /path/to/script.sh
Это запустит задание в полдень и полночь, затем поспите до 6 часов (половина 12-часового интервала) перед запуском сценария.
Запуск сценария 3 раза в день:
0 0,8,16 * * * sleep $(( $$ \% 14400 )); /path/to/script.sh
Это запустит задание в полночь, 8:00 и 16:00, а затем засыпает до 4 часов (половина 8-часового интервала) перед запуском сценария.
Поскольку вы пометили это с помощью Ubuntu, вероятно, у вас есть bash по умолчанию / bin / sh, который, кажется, интерпретирует $ RANDOM (несмотря на то, что RANDOM не указан в POSIX), поэтому для дополнительной непредсказуемости измените ответ Zwans на:
2 запуска в день:
0 0,12 * * * sleep $(( RANDOM \% 21600 )); /path/to/script.sh
3 запуска в день:
0 0,8,16 * * * sleep $(( RANDOM \% 14400 )); /path/to/script.sh
Я изменил &&
на ;
, что меняет значение с «ждать, пока команда сна не завершится успешно. "чтобы" поспать какое-то время, затем независимо от того, завершился ли сон или был прекращен ". Также обратите внимание, что %
необходимо экранировать , когда он является частью команды cron, в противном случае он интерпретируется как перевод строки.