2012-10-08 30 views
160

*/20 * * * *Chạy Cron công việc mỗi N phút cộng với bù đắp

Đảm bảo nó chạy mỗi 20 phút, tôi muốn chạy một nhiệm vụ mỗi 20 phút, bắt đầu lúc 5 giờ quá khứ, có thể như vậy với Cron? Có thể là:

5/20 * * * *?

+7

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

+0

nếu nó chia hết cho 2 và 3 nó cũng chia hết cho bởi 6 – Ziofil

Trả lời

332

Để chạy một nhiệm vụ mỗi 20 phút bắt đầu từ 5 quá khứ giờ, hãy thử này:

5-59/20 * * * * 

Giải thích

Một * trong lĩnh vực phút cũng giống như 0-59/1 nơi 0-59 là phạm vi 1bước. Lệnh sẽ chạy vào 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 đầu tiên bởi bước (1), cho đến khi (59) cuối cùng.

Đó là lý do tại sao */20 * * * * sẽ chạy sau 0 phút, 20 phút sau và 40 phút sau - tương tự như sau mỗi 20 phút. Tuy nhiên, sẽ chạy sau 0 phút, 25 phút sau và 50 phút sau - không giống như sau mỗi 25 phút. Đó là lý do tại sao thường 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 phạm vi một cách rõ ràng và đặt giá trị đầu tiên cho số tiền bù.

Ví dụ

5-59/20 * * * * sẽ chạy lúc 5 phút sau đó, phút 25 sau đó, và 45 phút sau đó.

10-59/25 * * * * sẽ chạy sau 10 phút và sau 35 phút.

1-59/2 * * * * sẽ chạy mỗi phút lẻ.

+0

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 hướng tới tài liệu không? Cảm ơn. – AJP

+6

Một loạt các tìm kiếm của Google đã dẫn tôi đến [câu trả lời lỗi máy chủ này] (http://serverfault.com/a/429397/181709). 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 gợi ý rằng * bước modulus phải bằng 0. Cuối cùng tôi đã tìm thấy [trang hướng dẫn này] (http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.rtn.doc%2Fdoc% 2Fc0054381.html) đã 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ủ đã được khắc phục. 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

+0

Cảm ơn và rất tốt công việc @toxalot, tôi muốn 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

28

Chắc chắn!

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

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

+7

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

+1

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

-7

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

Các vấn đề liên quan