Câu trả lời:
Tôi chưa bao giờ thấy một triển khai cron có cách để điều hành một công việc tại một thời điểm ngẫu nhiên. Đó là một yêu cầu kỳ lạ. Như tài liệu nêu, 9-12
là một phím tắt cho 9,10,11,12
, và có nghĩa là mỗi giờ từ 9 đến 12.
Nếu bạn muốn chạy một công việc tại một thời điểm ngẫu nhiên, hãy chạy công việc vào đầu khoảng thời gian và thêm một độ trễ ngẫu nhiên. Ví dụ: để chạy vào một giờ ngẫu nhiên trong khoảng từ 9 đến 12:
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM % 4))); do_stuff
Lưu ý rằng RANDOM
yêu cầu bash hoặc ksh, nó có thể không có sẵn trong vỏ mặc định.
Nếu bạn muốn chạy vào thời gian ngẫu nhiên trong khoảng từ 9 đến 12, với độ phân giải thứ hai, bạn có thể sử dụng RANDOM % 10800
làm độ trễ, nhưng vì RANDOM
nằm trong phạm vi 0..32767, sẽ có sự sai lệch về độ trễ giữa 0 và 32768% 10800 = 368. Để tránh sự thiên vị này:
SHELL=/bin/bash
0 9 * * * max=$((32768/10800*10800)); while delay=$RANDOM; ((delay > max)); do :; done; sleep $((delay % 10800)); do_stuff
--randomwait
đối số với yum hoặc--splay
đối số với đầu bếp-khách hàng), nhưng đối với những ứng dụng không có, thời gian thực hiện ngẫu nhiên sẽ là một tính năng hữu ích cần có trong lịch trình công việc.