*/20 * * * *
Đảm bảo nó chạy cứ sau 20 phút, tôi muốn chạy một nhiệm vụ cứ sau 20 phút, bắt đầu từ 5 giờ trước, điều này có khả thi với Cron không? Nó sẽ là:
5/20 * * * *
?
*/20 * * * *
Đảm bảo nó chạy cứ sau 20 phút, tôi muốn chạy một nhiệm vụ cứ sau 20 phút, bắt đầu từ 5 giờ trước, điều này có khả thi với Cron không? Nó sẽ là:
5/20 * * * *
?
Câu trả lời:
Để chạy một nhiệm vụ cứ sau 20 phút bắt đầu từ 5 giờ trước, hãy thử điều này:
5-59/20 * * * *
Giải trình
Một *
trong trường phút giống như 0-59/1
nơi 0-59
là phạm vi và 1
là bước . Lệnh sẽ chạy ở phút đầu tiên trong phạm vi (0), sau đó ở tất cả các phút liên tiếp cách xa bước đầu tiên (1), cho đến lần cuối cùng (59).
Đó là lý do tại sao */20 * * * *
sẽ chạy ở 0 phút, 20 phút sau và 40 phút sau - tương tự như cứ sau 20 phút. Tuy nhiên,*/25 * * * *
sẽ chạy ở 0 phút, 25 phút sau và 50 phút sau - không giống như cứ sau 25 phút. Đó là lý do tại sao người ta thường mong muốn sử dụng giá trị bước trong trường phút chia đều cho 60.
Vì vậy, để bù thời gian bắt đầu, hãy xác định rõ ràng phạm vi và đặt giá trị đầu tiên thành lượng bù.
Ví dụ
5-59/20 * * * *
sẽ chạy sau 5 phút, 25 phút sau và 45 phút sau.
10-59/25 * * * *
sẽ chạy sau 10 phút và 35 phút sau.
1-59/2 * * * *
sẽ chạy mỗi phút lẻ.
Chắc chắn rồi!
5,25,45 * * * * /your/cron
5-59/20
là có thể, nhưng 5,25,45
có một lợi thế là nó ngay lập tức rất rõ ràng những gì nó làm.
Bạn co thể thử: */5 * * * * sleep N; your job
sleep `shuf -i 1-100 -n 1`
không lừa