Làm thế nào để chạy công việc định kỳ 3 tháng một lần?


Câu trả lời:


68

Sau đây sẽ chạy kịch bản vào ngày 1 tháng 1, tháng 4, tháng 7 và tháng 10 lúc 03:30

30 03 01 Jan,Apr,Jul,Oct * /path/to/script

Cách khác, nhưng ít rõ ràng hơn

30 03 01 */3 * /path/to/script

Sẽ chạy ba tháng một lần vào lúc 03:30 ngày 1 tháng 1, tháng 4, tháng 7 và tháng 10.


4
+1: Tôi luôn nghĩ / ký hiệu là rõ ràng nhất ... Tôi sử dụng nó bất cứ khi nào có thể. (Các từ trong phần lập lịch của crontab khiến tôi phát điên ... Tôi sẽ làm: "0 0 1 3,6,9,12 * /path/to/script.bash" nếu tôi không thể làm / 3)
Satanicpuppy

11
sẽ không */3được bốn tháng một lần (12/3 = 4)?
warren

8
@warren Không, nó sẽ không. Logic ở đây là nhiều hơn một tuyên bố sự thật mod. Ví dụ: if (12% 3 == 0): run_script (). Tôi cũng nghĩ về điều này! Câu hỏi tuyệt vời.
Goahnary

1
@Goahnary Tôi nhận ra rằng một lúc sau khi tôi cũng yêu cầu làm rõ :)
warren

3
@warren nó thực sự nên là một toán tử mod chứ không phải là một bộ phận. Nhưng ồ tốt _ (ツ) _ /
Goahnary

7

Wikipedia có một lời giải thích hay về cách cấu hình Cron.

Đối với trường hợp cụ thể của bạn, bạn có thể chạy Biểu thức Cron để chạy cứ sau 3 tháng - rõ ràng là thay đổi các tháng cho phù hợp với lịch trình của bạn.

0 0 1 JAN,APR,JUL,OCT  * /path/to/script.bash

2
-1 Trong khi điều này đã được đánh dấu câu trả lời đúng, nó sẽ bị lỗi vì các trường không đúng thứ tự và ngay cả khi chúng theo đúng thứ tự sẽ chạy mỗi ngày vào lúc nửa đêm cho đến tháng 1, tháng 4, tháng 7, tháng 10 (ví dụ: 01/01 02 / 01 ... 31/01 01/04 ..) và không chỉ ba tháng một lần. Câu trả lời của tôi sẽ làm việc nhưng không được chấp nhận. Tôi buồn!
Richard Holloway

@Richard Holloway - những bí ẩn về lỗi máy chủ - đã cập nhật câu trả lời của tôi cảm ơn vì đã chỉ ra lỗi đánh máy
Jon Rhoades

1
Tôi đã xóa -1 để phản ánh sự thay đổi.
Richard Holloway

Bạn cũng không nên có khoảng trắng sau dấu phẩy, nhiều cài đặt cron sẽ xem chúng là dấu phân cách. Bạn cũng có thể bắt gặp các triển khai yêu cầu số tháng, mặc dù tôi nghĩ rằng điều này rất hiếm trong những ngày này.
David Spillett

@David Spillett cảm ơn chúng ta sẽ đến đó cuối cùng ... Có thể là câu trả lời tào lao nhất của tôi từ trước đến giờ. Nếu tôi có bất kỳ quyết định nào, tôi sẽ xóa nó đi;)
Jon Rhoades
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.