Tiếng Việt

Công cụ dành cho nhà phát triển · Trình tạo Crontab

Tại sao cron không có trường giây và biểu thức sáu trường đến từ đâu

· Lý lịch

cron phương ngữ xác nhận

Năm trường cron được chấp nhận bên cạnh trường giây thứ sáu bị từ chối
Hình minh họa vector ToolAcre gốc

Biểu thức sáu trường không phải là biểu thức cron, mặc dù nó trông giống như một biểu thức. Bài đăng này giải thích lý do tại sao cron Unix dừng ở số phút và cách các bộ lập lịch Quartz, Spring và đám mây mở rộng ngữ pháp.

Biểu thức sáu trường thuộc về một kiểu lập lịch khác, không phải trình phân tích cú pháp này

Khi ToolAcre nhìn thấy sáu phần được phân tách bằng khoảng trắng, nó sẽ từ chối chúng và giải thích rằng định dạng của nó có chính xác năm vị trí: phút, giờ, ngày trong tháng, tháng và ngày trong tuần. Thông báo lưu ý rằng kiểu giây ở đầu xuất hiện trong cú pháp Quartz hoặc giống systemd. Nó không âm thầm thả mã thông báo đầu tiên.

Sự từ chối đó ngăn cản sự tham nhũng về chức vụ. Xóa mã thông báo mà không hiểu ngữ pháp nguồn có thể thay đổi mọi giá trị còn lại. Quá trình dịch bắt đầu bằng cách xác định ý nghĩa của từng trường nguồn và liệu lịch trình dự kiến ​​có thể hiện được trong năm trường mục tiêu hay không.

Kho lưu trữ chứng minh ngữ pháp đầu tiên, không phải lý do lịch sử cron sử dụng phút

Mảng trường được triển khai bắt đầu vào phút và kết thúc vào ngày trong tuần. Không có thông số kỹ thuật về giây hoặc năm tồn tại. Các thử nghiệm yêu cầu số lượng trường chính xác và loại bỏ cả biểu thức ngắn hơn và dài hơn. Điều đó là đủ để ghi lại ngữ pháp hiện tại.

Cuốn sách đưa ra lời giải thích lịch sử dựa trên việc một con daemon thức dậy mỗi phút một lần. Kho lưu trữ này không chứa việc triển khai lưu trữ cần thiết để chứng minh nguồn gốc đó. Do đó, bài viết chỉ nói rằng mô hình của ToolAcre có độ phân giải theo phút và không có vị trí giây.

Các chi tiết thạch anh ngoài kiểu giây dẫn đầu không được triển khai ở đây

Thông báo lỗi nguồn đặt tên Quartz làm ví dụ về kiểu giây đầu tiên, nhưng trình phân tích cú pháp không triển khai toán tử Quartz hoặc vị trí tùy chọn. Các ký tự như `?`, `L`, `W` và `#` không đọc được giá trị thông thường. Chúng không được dịch hoặc giải thích dưới dạng cú pháp được hỗ trợ.

Tránh sử dụng ToolAcre làm trình xác thực Quartz. Một biểu thức nguồn hợp lệ có thể mã hóa các mối quan hệ mà cron năm trường không thể biểu thị. Đọc tài liệu nguồn, nêu yêu cầu bằng từ ngữ và chỉ xây dựng lại phần được ngữ pháp đích hỗ trợ.

Ngữ pháp lập lịch mùa xuân và đám mây nằm ngoài bộ bằng chứng

Tên khung và bộ lập lịch đám mây trong sổ làm việc yêu cầu tài liệu hiện tại của riêng chúng. Kho lưu trữ không có lược đồ lịch trình Hành động Spring, EventBridge, Kubernetes hoặc GitHub. Số lượng trường, bí danh và chính sách múi giờ của họ không nên được tóm tắt từ bộ nhớ ở đây.

Sự tương đồng không phải là sự tương thích. Hai sản phẩm đều có thể gọi một chuỗi cron trong khi chỉ định các vị trí hoặc ngữ nghĩa ngày khác nhau. Trình phân tích cú pháp năm trường nghiêm ngặt của ToolAcre rất có giá trị vì nó dừng ở ranh giới của nó thay vì chấp nhận một biểu thức mà ý nghĩa của nó không thể bảo toàn.

Ví dụ đã hoạt động: xây dựng lại lịch trình các ngày trong tuần kéo dài 1/4 giờ có thể biểu thị

Giả sử yêu cầu nguồn là mười lăm phút một lần trong các giờ 9 đến 17 vào các ngày trong tuần và không có nhà điều hành nước ngoài nào mang ý nghĩa bổ sung. Trong ToolAcre dạng biểu thị là `*/15 9-17 * * MON-FRI`. Trình phân tích cú pháp mở rộng các giờ theo quý, bao gồm cả giờ và các ngày trong tuần được đặt tên.

Sau đó, mô tả và bản xem trước sẽ hiển thị phần diễn giải mục tiêu, bao gồm cả đề xuất hàng ngày cuối cùng tại 17:45. So sánh điều đó với hành vi thực tế của bộ lập lịch nguồn trước khi gọi bản dịch tương đương. Biểu mẫu năm trường chỉ đúng với yêu cầu bằng lời nói được thiết lập trong quá trình dịch thuật.

Các vòng lệnh dưới phút không được tạo hoặc đề xuất

Công việc dưới phút không thể được biểu thị vì phút là trường nhỏ nhất. Sổ làm việc đề xuất vòng lặp bên trong lệnh nhưng ToolAcre không tạo, thực thi hoặc giám sát vòng lặp. Mẫu như vậy gây ra các mối lo ngại về thời gian, chồng chéo và tắt máy bên ngoài mô hình lịch của nó.

Chọn thời gian chạy được thiết kế cho độ phân giải được yêu cầu và xác minh nó ở đó. Không ngụy trang yêu cầu giây dưới dạng cron năm trường bằng cách đặt giây vào khe phút. Lịch trình kết quả sẽ chậm hơn và khác biệt về mặt ngữ nghĩa mặc dù đã vượt qua xác thực bằng số trong một số trường hợp.

Toán nước ngoài cuối tháng vẫn chưa dịch

Các toán tử cuối tháng và thứ tự ngày trong tuần từ các ngữ pháp khác cũng nằm ngoài phạm vi. Việc loại bỏ chúng có thể mở rộng hoặc thu hẹp ngày tháng một cách khó lường. ToolAcre hỗ trợ các giá trị, tên, phạm vi, danh sách và bước thông thường cùng với các bí danh được ghi lại của nó; bộ đó xác định trần dịch.

Khi yêu cầu vượt quá mức trần, hãy báo cáo "không thể đại diện được" và giữ lại một bộ lập lịch hỗ trợ yêu cầu đó hoặc thiết kế lại hành động. Việc viết lại bị mất dữ liệu xảy ra khi phân tích cú pháp còn tệ hơn cả sự không tương thích rõ ràng vì nó tạo ra các ngày tháng trong tương lai hợp lý nhưng không chính xác.

Bài học rút ra: đếm các trường trước khi dán — và sử dụng trình tạo để xây dựng phiên bản 5 trường mà crontab chấp nhận

Trước tiên hãy đếm các trường, xác định phương ngữ nguồn thứ hai và dịch yêu cầu—không phải dấu câu—thứ ba. Lỗi của ToolAcre khiến bước đầu tiên không thể tránh khỏi và mô tả của nó cung cấp khả năng kiểm tra phía mục tiêu sau khi xây dựng lại.

Tuyến đường chỉ tạo ra các biểu thức năm trường. Nó không xác nhận số giây, năm hoặc các toán tử dành riêng cho bộ lập lịch và nó không lên lịch công việc. Những thiếu sót đó xác định một ranh giới đáng tin cậy sẽ vẫn hiển thị trong mọi cuộc thảo luận về di chuyển.