Công cụ dành cho nhà phát triển · Trình tạo Crontab
Đọc to biểu thức cron: cách */5 9-17 * * 1-5 trở thành từ
· Cách thức hoạt động
cron code-review developer-workflow
Dịch một biểu thức sang tiếng Anh là một quá trình máy móc một khi bạn biết thứ tự. Bài đăng này cung cấp thuật toán đọc, áp dụng nó cho các ví dụ phức tạp và cho biết cách giải thích của trình tạo giúp bạn kiểm tra.
Một crontab trong phần khác biệt mà bạn không thể xem lại — năm trường có các bước và phạm vi và không có bình luận nào giải thích chúng
Biểu thức năm mã thông báo trong yêu cầu kéo là chính sách thực thi được nén thành dấu câu. Những người đánh giá nhận ra hình dạng nhưng không thể nói to lịch trình có thể sẽ bỏ lỡ điểm cuối tổng thể, một bước đặt sai vị trí hoặc mối quan hệ đặc biệt giữa các trường hai ngày. Do đó, dịch thuật là kiểm tra tính chính xác chứ không phải tài liệu mang tính thẩm mỹ.
ToolAcre lấy câu của nó từ đối tượng được phân tích cú pháp được sử dụng bởi các cảnh báo và bản xem trước. Chỉ dán năm trường, để lại lệnh và bí mật bên ngoài. Nếu từ ngữ được tạo ra khác với nhận xét của tác giả, hãy tạm dừng xem xét và giải quyết ý định trước khi cài đặt biểu thức ở bất kỳ đâu.
Trước tiên hãy đọc các trường ngày - ngày trong tuần và tháng cho bạn biết ngày nào, sau đó phút và giờ cho bạn biết khi nào
Phạm vi lịch dễ thiết lập nhất trước chi tiết đồng hồ. Tháng và ngày trong tuần tiết lộ những phần nào trong năm hoặc tuần đủ điều kiện; ngày trong tháng có thể thêm điều kiện lịch khác; giờ và phút sau đó địa điểm chạy trong ngày phù hợp. Thứ tự đọc này dành cho con người xem xét, trong khi thứ tự vị trí được lưu trữ của biểu thức vẫn giữ nguyên vị trí phút đầu tiên.
Luôn hỏi xem cả hai trường ngày có bị hạn chế hay không. Nếu vậy, ToolAcre nối chúng với “hoặc” và đưa ra cảnh báo. Đọc chúng một cách tình cờ khi các bộ lọc AND liền kề sẽ thay đổi lịch trình. Ký tự đại diện trong trường một ngày sẽ loại bỏ sự mơ hồ đó và để trường kia đóng vai trò là hạn chế ngày duy nhất.
Dịch từng mã thông báo — * là 'mọi', một số là 'tại', một phạm vi là 'từ–đến', một bước là 'mọi N bắt đầu từ'
Một ngôi sao có nghĩa là mọi giá trị được phép ở vị trí đó. Một số chọn một giá trị. Dấu gạch nối bao gồm mọi giá trị giữa các điểm cuối của nó. Dấu phẩy kết hợp các mục và dấu gạch chéo lấy mẫu mọi giá trị thứ n từ đầu ký tự đại diện, phạm vi hoặc bắt đầu trần. Giá trị tối thiểu của trường xác định nơi bắt đầu bước ký tự đại diện.
Tên được chấp nhận theo tháng và ngày trong tuần mà không phân biệt chữ hoa chữ thường, bao gồm các phạm vi như `JAN-MAR` và `MON-FRI`. Chủ nhật có thể được viết là 0 hoặc 7 và được chuẩn hóa thành 0. Mã mô tả chuyển đổi các giá trị mở rộng liền kề thành từ ngữ “thông qua” và các giá trị không liền kề thành một danh sách có thể đọc được.
Ví dụ hoạt động: công cụ mô tả số giờ đã chọn, trong khi giá trị phút mở rộng xác định lần chạy cuối cùng
`*/5 9-17 * * 1-5` chọn các giá trị phút 0 đến 55 theo các bước gồm 5 giờ, giờ 9 đến 17 và các ngày trong tuần từ thứ Hai đến thứ Sáu. Công cụ này mô tả bước đi từng phút trong khoảng giờ đã chọn. Việc mở rộng các giá trị cho thấy rằng ứng cử viên cuối cùng trong 17 giờ được bao gồm là 17:55.
Ứng cử viên cuối cùng đó thường bị bỏ qua khi “9-17” được diễn giải thành ranh giới ngày làm việc. Cron chọn các giá trị giờ hoàn chỉnh, sau đó kết hợp chúng với tất cả các phút đã chọn. Nếu ý định kết thúc tại 17:00 thì biểu thức không thể được xem là chính xác chỉ vì từ “chín đến năm” nghe quen thuộc.
Ví dụ đã hoạt động: 0 0 1,15 * 3 — đọc trường ngày HOẶC quy tắc thành tiếng để không bị bỏ sót
Bây giờ hãy đọc `0 0 1,15 * 3`. Nửa đêm được chọn, ngày trong tháng là ngày đầu tiên hoặc ngày mười lăm và ngày trong tuần là thứ Tư. Vì cả hai trường ngày đều bị hạn chế nên điều kiện lịch là ngày đầu tiên hoặc ngày 15 hàng tháng HOẶC thứ Tư hàng tuần. Đó không phải là “Thứ Tư khi ngày là 1 hoặc 15.”
Cảnh báo của ToolAcre làm cho sự kết hợp đó trở nên nổi bật và phần mô tả của nó sẽ chèn từ “hoặc”. Bản xem trước lần chạy tiếp theo cung cấp ngày cụ thể cho vùng đã chọn. Xem lại cả ba kết quả đầu ra vì chỉ một câu trôi chảy vẫn có thể che giấu rằng yêu cầu cơ bản là sự giao thoa mà phương ngữ không thể diễn đạt trực tiếp.
Chỉ lưu trữ một nhận xét có ý định sau khi kiểm tra nó với biểu thức
Một nhận xét phía trên một biểu thức có thể bảo toàn ý định nhưng nó cũng có thể bảo toàn một lời nói dối cũ sau khi các trường thay đổi. Tạo hoặc xây dựng lại câu theo cách thủ công từ các mã thông báo hiện tại trong quá trình xem xét. Nếu chỉnh sửa thay đổi `0` thành `*/5`, chỉ cập nhật nhận xét sau khi xác nhận tập hợp phút mở rộng và lần chạy cuối cùng.
Thích một nhận xét nêu rõ giả định về vùng cũng như tần số của đồng hồ treo tường. Biểu thức không chứa trường múi giờ, trong khi bản xem trước của ToolAcre yêu cầu người đánh giá chọn một trường. Ghi chú đó giúp người khác sao chép cùng một danh sách mà không ngụ ý rằng lựa chọn trình duyệt sẽ định cấu hình bộ lập lịch cuối cùng.
Ngữ pháp sáu, bảy trường bị từ chối, không được dịch
Trình phân tích cú pháp yêu cầu chính xác năm trường. Đầu vào sáu trường nhận được giải thích cụ thể về kiểu giây ở đầu; các hình thức dài hơn không được giải thích. ToolAcre cũng không có trường năm. Do đó, thuật toán tiếng Anh đơn giản trong bài viết này chỉ áp dụng cho ngữ pháp năm trường của kho.
Không loại bỏ một trường khỏi Quartz, Spring hoặc sản phẩm khác cho đến khi văn bản còn lại được xác thực. Các toán tử không được hỗ trợ có thể mang ý nghĩa thiết yếu. Bản dịch yêu cầu tài liệu cho cả hai hệ thống, trong khi trình tạo này chỉ cung cấp bằng chứng cho các giá trị, tên, phạm vi, danh sách, bước, ký tự đại diện và bí danh được chấp nhận của chính nó.
Bài học rút ra: mọi biểu thức đều có một câu - và trình tạo Crontab tạo ra câu đó để bạn có thể so sánh nó với ý định
Mọi biểu thức được hỗ trợ đều có thể được mở rộng thành các giá trị trường hữu hạn và một câu lịch. Việc đọc những giá trị đó sẽ hiển thị các ứng cử viên cạnh tranh mà các cụm từ thông thường bỏ qua. Nó cũng buộc quy tắc HOẶC trường ngày vào cuộc trò chuyện trước khi lịch trình đến máy chủ hoạt động.
Để xem xét, hãy dán biểu thức, so sánh mô tả đã tạo với yêu cầu đã nêu, kiểm tra các cảnh báo và lấy mẫu về thời gian sắp tới. Giữ nhận xét kết quả bên cạnh dòng nhưng coi biểu thức được phân tích cú pháp là nguồn thực thi. Trình tạo giải thích ý định lịch trình; nó không chứng thực một lệnh hoặc cài đặt nó.