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 múi giờ: giờ địa phương, CRON_TZ và vùng chứa trong UTC

· Lý lịch

cron time-zones lập kế hoạch

Một biểu thức năm trường trỏ đến đồng hồ ở UTC, Tokyo và New York
Hình minh họa vector ToolAcre gốc

Biểu thức cron không có múi giờ trong đó, vì vậy năm trường giống nhau có nghĩa là các thời điểm khác nhau trên các máy chủ khác nhau. Bài đăng này giải thích cron đồng hồ nào sử dụng, tiện ích mở rộng CRON_TZ và lý do vùng chứa thay đổi câu trả lời.

Các trường giống nhau tạo ra các bản xem trước khác nhau khi vùng được chọn thay đổi

`0 9 * * *` chứa một giờ nhưng không có vị trí. Trong ToolAcre, việc chọn UTC hoặc Asia/Tokyo sẽ giữ nguyên năm trường trong khi thay đổi thời điểm được biểu thị bởi mỗi ứng cử viên đồng hồ treo tường 09:00. Do đó, một báo cáo có thể xuất hiện cách nhau hàng giờ khi hai môi trường diễn giải cùng một nhãn cục bộ ở các vùng khác nhau.

Bảng điều khiển làm rõ sự phụ thuộc này bằng bộ chọn “Hiển thị các lần chạy tiếp theo trong”. Sử dụng vùng của máy dự định khi xem lại lịch trình, sau đó ghi lại giả định đó bên cạnh biểu thức. Việc lựa chọn chỉ ảnh hưởng đến việc xem trước trình duyệt; nó không được nhúng trong văn bản cron đã sao chép.

Biểu thức không chứa vùng; Lựa chọn đồng hồ daemon bên ngoài không được định cấu hình ở đây

Có chính xác năm thông số kỹ thuật của trường, không có múi giờ nào được đặt tên. `nextRuns` chấp nhận vùng dưới dạng tùy chọn riêng biệt và mặc định là môi trường máy chủ mà JavaScript nhìn thấy. Sự tách biệt này chứng tỏ rằng ngữ cảnh vùng nằm ngoài biểu thức trong mô hình của ToolAcre.

Sổ làm việc xác nhận đồng hồ nào mỗi daemon đọc. Kho lưu trữ này không thể định cấu hình hoặc kiểm tra daemon, vì vậy nó không thiết lập hành vi chung đó. Nó chỉ có thể tư vấn khớp vùng xem trước với phần diễn giải được ghi lại trong tài liệu của mục tiêu và xác minh bộ lập lịch đã cài đặt một cách độc lập.

Hỗ trợ CRON_TZ nằm ngoài trình phân tích cú pháp này và không được xác nhận

`CRON_TZ` không được phân tích cú pháp. Việc nhập nó vào hộp biểu thức không thành công vì nó không có năm trường và không có điều khiển từng trường nào lưu trữ một lệnh. Tuyên bố của sổ làm việc rằng một triển khai hỗ trợ nó trong khi các triển khai khác không yêu cầu các nguồn không có ở đây.

Nếu mục tiêu ghi lại chỉ thị múi giờ, hãy định cấu hình và kiểm tra nó ở đó. Đừng mong đợi ToolAcre giữ nguyên lệnh khi sao chép một biểu thức. Giữ siêu dữ liệu vùng liền kề với lịch trình cho đến khi cấu hình dành riêng cho mục tiêu được xem xét và triển khai.

Ngữ nghĩa môi trường TZ không được mô hình hóa

Nhiệm vụ `TZ` cũng nằm ngoài phạm vi tương tự. Trình duyệt sử dụng tùy chọn `timeZone` rõ ràng để định dạng và chuyển đổi, không phải dòng môi trường bên trong tệp crontab. Nó không thể biết liệu một nhiệm vụ có thay đổi việc đánh giá lịch trình, đầu ra lệnh hay không trên hệ thống khác.

Sự điều chỉnh này tránh được một giả định tinh vi nhưng tốn kém. Tên tương tự không ngụ ý vai trò giống hệt nhau. Hãy coi việc lựa chọn vùng bộ lập lịch và môi trường xử lý dưới dạng các câu hỏi riêng biệt và trả lời cả hai từ quá trình triển khai mục tiêu thay vì từ trình tạo biểu thức.

Mặc định về vùng chứa và đám mây yêu cầu bằng chứng mục tiêu

Các container và hình ảnh đám mây không được tuyến đường kiểm tra. Không có ổ cắm Docker, đồng hồ máy chủ hoặc dịch vụ siêu dữ liệu nào được truy vấn. Những tuyên bố rằng chúng mặc định là UTC có thể đúng trong một triển khai cụ thể nhưng không thể khái quát hóa từ `Intl.DateTimeFormat` đang chạy trong trình duyệt của người đọc.

Nắm bắt vùng mục tiêu thực tế thông qua các công cụ và cấu hình được ghi lại của nó. Sau đó chọn cùng tên IANA trong ToolAcre nếu có. Danh sách vùng trình duyệt phản ánh những gì công cụ của nó biết; nó không chứng minh rằng mục tiêu chứa dữ liệu hoặc cài đặt vùng giống hệt nhau.

Ví dụ đã hoạt động: xem trước 09:00 ở hai vùng đã chọn mà không cần chuyển đổi theo mùa bằng mã hóa cứng

Giữ cố định `0 9 * * *` và xem trước một kết quả ở UTC, sau đó ở Mỹ/New_York. Mỗi danh sách hiển thị 09:00 dưới dạng thời gian treo tường, nhưng các thời điểm kỷ nguyên khác nhau theo độ lệch vùng áp dụng. Tránh xuất bản một chuyển đổi giờ cố định vì chênh lệch theo khu vực có thể thay đổi theo ngày.

Các thử nghiệm chứng minh nguyên tắc này với UTC và nửa đêm ở Tokyo cũng như với công việc hàng ngày ở London trong thời gian sắp tới. Sử dụng các ứng cử viên trực tiếp cho những ngày đang được xem xét. Nếu quá trình triển khai chuyển đổi lịch trình thành UTC giờ cố định, hãy ghi lại giới hạn theo mùa thay vì ngụ ý một giá trị duy trì 09:00 cục bộ mãi mãi.

DST việc xử lý ứng viên là hành vi xem trước ToolAcre, không phải là đảm bảo daemon

ToolAcre xây dựng các ứng cử viên dưới dạng thành phần lịch địa phương và chuyển đổi chúng thông qua dữ liệu vùng trình duyệt. Thời gian chuyển tiếp mùa xuân không tồn tại bị bỏ qua và giờ thông thường hàng ngày vẫn giữ nguyên giờ địa phương trong quá trình chuyển đổi đã thử nghiệm. Đó là những sự thật thực hiện xem trước.

Chúng không phải là sự đảm bảo thực thi cho trình lập lịch daemon hoặc đám mây. Xác minh chính sách chuyển đổi nơi công việc sẽ chạy. Bản xem trước có thể tiết lộ rủi ro và cung cấp các khoảnh khắc dự kiến, trong khi bộ lập lịch được triển khai cung cấp khả năng quan sát chính xác về việc liệu một hành động có bắt đầu hay không.

Bài học rút ra: lịch trình chỉ hoàn chỉnh với vùng của nó — xây dựng các trường trong trình tạo, sau đó ghi lại múi giờ bên cạnh chúng

Một lịch trình sẽ không đầy đủ về mặt hoạt động nếu không có ngữ cảnh vùng mặc dù năm trường của nó đã hoàn chỉnh về mặt cú pháp. ToolAcre thể hiện sự thật đó bằng cách giữ vùng trong một bộ chọn riêng biệt và hiển thị danh sách đồng hồ treo tường thu được. Chỉ riêng biểu thức được sao chép không thể mang lại sự lựa chọn.

Ghi lại biểu thức và vùng cùng nhau, xác minh cấu hình mục tiêu và xem lại các ứng cử viên gần các thay đổi bù. Trình tạo tạo và giải thích lịch trình; nó không đặt đồng hồ máy chủ, viết chỉ thị múi giờ hoặc thực thi lời hứa. Ranh giới đó giữ cho bản xem trước luôn hữu ích mà không cần kiểm soát quá mức.