Công cụ dành cho nhà phát triển · Trình tạo Crontab
Cách hoạt động của năm trường crontab: phút, giờ, ngày, tháng, ngày trong tuần
· Cách thức hoạt động
cron lập kế hoạch developer-workflow
Mỗi lịch trình cron có năm trường vị trí và thứ tự không bao giờ thay đổi. Bài đăng này giải thích phạm vi của từng trường, trường hợp đặc biệt của Chủ nhật và cách một dòng trở thành tập hợp các phút phù hợp.
Một bản sao lưu phải chạy ở 02:30 mỗi đêm — và năm sao mà bạn không chắc chắn cách lấp đầy
Bạn cần một bản sao lưu lúc 02:30 hàng đêm nhưng hãy tiếp tục trộn lẫn xem ngôi sao nào trong số năm ngôi sao sở hữu giờ. Cron có tính chất vị trí: một số ở cột sai sẽ tạo ra một lịch trình khác trong khi bề ngoài trông có vẻ hợp lệ. Bắt đầu với thời gian công việc phải chạy, múi giờ của máy và ai sở hữu crontab; chỉ sau đó điền vào các trường. ToolAcre có thể phân tích cú pháp và mô tả một biểu thức nhưng nó không cài đặt công việc hoặc chạy lệnh sao lưu của bạn.
Các trường vị trí, thứ tự cố định - phút, giờ, ngày trong tháng, tháng, ngày trong tuần, sau đó là lệnh
Dòng crontab của người dùng có phút, giờ, ngày trong tháng, tháng, ngày trong tuần, sau đó là lệnh. Trong 30 2 * * * backup.sh, 30 là phút và 2 là giờ: 02:30 mỗi ngày theo múi giờ của môi trường cron đó. Lệnh không phải là trường lần thứ sáu. Toàn hệ thống /etc/crontab có thể bao gồm trường người dùng trước lệnh, đó là lý do tại sao việc sao chép một cách mù quáng mục nhập hệ thống vào crontab cá nhân của bạn có thể chạy một lệnh ngoài ý muốn.
Phạm vi của từng trường — 0–59, 0–23, 1–31, 1–12 và 0–7, với 0 và 7 đều có nghĩa là Chủ nhật ở hầu hết các máy chủ
Biên bản chấp nhận 0–59, giờ 0–23, ngày trong tháng 1–31, tháng 1–12 và ngày trong tuần 0–7 theo kiểu Vixie quy ước mô hình ToolAcre; 0 và 7 nghĩa là Chủ nhật. Dấu hoa thị có nghĩa là tất cả các giá trị trong trường đó. Phạm vi và danh sách được phân tách bằng dấu phẩy có thể hạn chế các giá trị nhưng phạm vi số của trường vẫn được áp dụng. 25 ở vị trí giờ không phải là lịch trình vào đêm khuya: lịch trình này không hợp lệ và phải được báo cáo thay vì được chuyển sang ngày hôm sau.
Cách thức hoạt động của việc so khớp - cron thức dậy mỗi phút và chạy một dòng nếu các trường thời gian khớp nhau (với một ngoại lệ cho các trường hai ngày)
Cron kiểm tra các trường phù hợp vào mỗi phút. Phút, giờ và tháng đều cần phải khớp. Các trường hai ngày có một quy tắc đặc biệt trong cron Vixie: khi cả ngày trong tháng và ngày trong tuần đều bị hạn chế, việc khớp một trong hai trường có thể kích hoạt công việc, không nhất thiết phải cả hai. Do đó 0 0 13 * 5 có nghĩa là ngày thứ mười ba của một tháng hoặc thứ Sáu hàng tuần, không chỉ thứ Sáu ngày mười ba. Với các ký tự đại diện ở vị trí ban ngày, ví dụ hàng đêm sẽ hoạt động như dự định. Đầu ra giải thích của công cụ giúp hiển thị lựa chọn đó trước khi cài đặt.
Ví dụ đã hoạt động: 30 2 * * * backup.sh — đọc to, sau đó viết 'các ngày trong tuần lúc 08:15' từ đầu
Đọc to 30 2 * * * backup.sh khi “chạy backup.sh lúc 02:30 mỗi ngày”. Đối với các ngày trong tuần lúc 08:15, đặt phút 15, giờ 8, ngày không giới hạn/month và các ngày trong tuần 1–5: 15 8 * * 1-5. Chỉ dán năm trường lịch trình vào trình tạo Crontab và kiểm tra mô tả cũng như danh sách lần chạy tiếp theo của nó; sau đó cài đặt lệnh bằng trình soạn thảo crontab của riêng bạn. Đối với bản sao lưu chạy gần thời điểm thay đổi tiết kiệm ánh sáng ban ngày, hãy xác minh dấu thời gian chạy tiếp theo trong vùng thực tế thay vì giả sử mọi 02:30 cục bộ đều tồn tại.
Tên cho các tháng và ngày trong tuần, bao gồm các dãy tên được hỗ trợ
Nhiều phương ngữ cron chấp nhận tên gồm ba chữ cái như JAN hoặc MON thay vì số. Tên có thể làm cho lịch trình do con người duy trì rõ ràng hơn nhưng việc sử dụng 0/7 cho Chủ nhật vẫn phổ biến và các cách triển khai cron khác có thể có các tiện ích mở rộng khác nhau. ToolAcre nhận dạng các tên và phạm vi tháng và ngày phổ biến như JAN-MAR và MON-FRI; trình phân tích cú pháp của nó chấp nhận 15 8 * JAN-MAR MON-FRI. Một triển khai cron hoặc bộ lập lịch đám mây khác có thể sử dụng một số trường hoặc tiện ích mở rộng khác, vì vậy hãy tham khảo ngữ pháp riêng của môi trường đó trước khi cài đặt dòng.
Phần tổng quan này không bao gồm đầy đủ: danh sách, các bước và môi trường thực thi
Phần giới thiệu này giải thích quy tắc HOẶC trường ngày của Vixie nhưng không khám phá các kết hợp phức tạp của nó với các danh sách và các bước, shell/environment thực thi lệnh hoặc hành vi tiết kiệm ánh sáng ban ngày; mỗi cái có thể thay đổi liệu một tác vụ thực sự có chạy hay không. Người xác thực có thể mô tả lịch trình nhưng không thể đảm bảo rằng backup.sh tồn tại, có quyền hoặc ghi các bản sao lưu có thể phục hồi. Kiểm tra bản sao lưu và khôi phục trước khi dựa vào mục nhập cron sản xuất.
Bài học rút ra: năm trường, một ngữ pháp — và trình tạo Crontab xây dựng biểu thức và giải thích lại cho bạn
Năm vị trí tạo thành một ngữ pháp. Trình tạo Crontab đọc lịch trình đề xuất của bạn, đặt tên cho từng trường và hiển thị các lần thực thi sắp tới trong vùng đã chọn mà không cần cài đặt bất kỳ thứ gì trên hệ thống của bạn. Nhập các ví dụ hàng đêm và ngày trong tuần, so sánh những gì công cụ nói với những gì bạn dự định, sau đó giữ nguyên lệnh và quyết định múi giờ cùng với tài liệu vận hành của công việc.