Chạy công việc Cron mỗi N phút cộng với bù


251

*/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 * * * * ?


10
Cảm ơn người Babylon, người đã quyết định rằng hệ thống thời gian của chúng ta nên được chia chính xác cho 1,2,3,4,5 và 6.
arivero

3
nếu nó chia hết cho 2 và 3 thì nó cũng chia hết cho 6
Ziofil

Câu trả lời:


514

Để 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/1nơi 0-59phạm vi1bướ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ẻ.


3
mà hoạt động hoàn hảo. làm thế nào bạn tìm nó ở ngoài kia? Bạn có thể chỉ cho tôi về các tài liệu? Cảm ơn.
AJP

12
Một loạt các tìm kiếm của Google đã đưa tôi đến câu trả lời Lỗi Máy chủ này . Nó đã có một sai lầm khiến tôi thực sự bối rối, đặc biệt là vì các kết quả khác cho thấy bước mô-đun phút nên bằng không . Cuối cùng tôi đã tìm thấy trang hướng dẫn này cho tôi câu trả lời. Kết quả là, tôi đã có thể nhận xét về câu trả lời Lỗi Máy chủ hiện đã được sửa. Tôi không nhớ các thuật ngữ tìm kiếm thực tế mà tôi đã sử dụng để tìm trang IBM.
toxalot

3
Cảm ơn và làm việc rất tốt @toxalot, tôi ước chúng tôi có thể trao cho bạn huy hiệu "Điều tra viên không mệt mỏi"! : P
AJP

5
CƯỜI LỚN. Tôi cần chạy một công việc cứ sau 10 phút (bù 5) và thực sự không muốn sử dụng danh sách được phân cách bằng dấu phẩy, vì vậy tôi đã quyết tâm tìm câu trả lời.
toxalot

2
CPanel dường như không thích điều này một cách đáng tiếc :(
Robert Went

53

Chắc chắn rồi!

5,25,45 * * * * /your/cron

2
Cảm ơn. Tôi đã kết thúc việc này, hy vọng có thể có một giải pháp thanh lịch hơn cho nó.
AJP

13
Đôi khi giải pháp đơn giản là tốt hơn vì nó dễ đọc và dễ hiểu. Tôi muốn biết điều đó 5-59/20là có thể, nhưng 5,25,45có một lợi thế là nó ngay lập tức rất rõ ràng những gì nó làm.
thomasrutter

2
chỉ khi bước của bạn đủ lớn
Tebe

3
Đây là một ví dụ tốt hơn nhiều. Phải mất 0 tải nhận thức để hiểu khi công việc bắt đầu.
Dylan Pierce

11

Bạn co thể thử: */5 * * * * sleep N; your job


4
Tôi thấy không có gì sai với điều này - trên thực tế, điều này rất giống với cách công việc định kỳ của certbot đạt được một mức bù ngẫu nhiên giúp cân bằng tải máy chủ. chắc chắn không xứng đáng với tất cả những điều đó
billynoah

6
Điều này khiến tôi tự hỏi làm thế nào để ngủ một số giây ngẫu nhiên. sleep `shuf -i 1-100 -n 1`không lừa
Laizer

chết tiệt, @Laizer bạn đã khiến tôi học được điều gì đó một lần nữa! (cảm ơn bạn!)
UncaAlby
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.