Saya belum pernah melihat implementasi cron yang memiliki cara untuk menjalankan pekerjaan secara acak. Ini persyaratan aneh. Seperti yang dinyatakan dalam dokumentasi, 9-12
merupakan jalan pintas untuk 9,10,11,12
, dan artinya setiap jam dari 9 hingga 12.
Jika Anda ingin menjalankan pekerjaan secara acak, jalankan pekerjaan di awal interval, dan tambahkan penundaan acak. Misalnya, untuk menjalankan pada jam acak antara 9 dan 12:
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM % 4))); do_stuff
Catatan yang RANDOM
membutuhkan bash atau ksh, mungkin tidak tersedia di shell default.
Jika Anda ingin menjalankan secara acak antara 9 dan 12, dengan resolusi kedua, Anda dapat menggunakan RANDOM % 10800
sebagai penundaan, tetapi karena RANDOM
berada dalam kisaran 0..32767, akan ada bias terhadap keterlambatan antara 0 dan 32768% 10800 = 368. Untuk menghindari bias ini:
SHELL=/bin/bash
0 9 * * * max=$((32768/10800*10800)); while delay=$RANDOM; ((delay > max)); do :; done; sleep $((delay % 10800)); do_stuff
--randomwait
argumen ke yum atau--splay
argumen ke koki-klien), tetapi bagi yang tidak, waktu eksekusi acak akan menjadi fitur yang bermanfaat untuk dimiliki dalam penjadwal pekerjaan.