العربية

أدوات المطورين · مولد Crontab

لماذا لا يحتوي cron على حقل المنطقة الزمنية: التوقيت المحلي، CRON_TZ والحاويات في UTC

· خلفية

كرون المناطق الزمنية جدولة

تعبير واحد مكون من خمسة حقول يشير إلى الساعات في UTC وطوكيو ونيويورك
الرسم التوضيحي المتجه الأصلي ToolAcre

لا يحتوي تعبير cron على منطقة زمنية، لذا فإن الحقول الخمسة نفسها تعني لحظات مختلفة على مضيفين مختلفين. يشرح هذا المنشور أي ساعة يستخدمها cron، والامتداد CRON_TZ، ولماذا تغير الحاويات الإجابة.

تنتج نفس الحقول لحظات معاينة مختلفة عندما تتغير المنطقة المحددة

`0 9 * * *` يحتوي على ساعة ولكن لا يحتوي على موقع. في ToolAcre، يؤدي اختيار UTC أو Asia/Tokyo إلى ترك الحقول الخمسة دون تغيير أثناء تغيير اللحظة التي يمثلها كل مرشح لساعة الحائط 09:00. وبالتالي يمكن أن يظهر التقرير بفارق ساعات عندما تفسر بيئتان نفس التسميات المحلية في مناطق مختلفة.

تجعل اللوحة هذه التبعية واضحة باستخدام محدد "إظهار عمليات التشغيل التالية". استخدم منطقة الجهاز المقصود عند مراجعة الجدول، ثم سجل هذا الافتراض بجانب التعبير. يؤثر التحديد فقط على معاينة المتصفح؛ لم يتم تضمينه في نص cron المنسوخ.

لا يحتوي التعبير على منطقة؛ لم يتم تكوين اختيار الساعة الشيطانية الخارجية هنا

هناك بالضبط خمسة مواصفات للمجال، ولا يوجد منطقة زمنية محددة. يقبل `nextRuns` المنطقة كخيار منفصل ويضبط افتراضيًا على البيئة المضيفة التي يراها JavaScript. يثبت هذا الفصل أن سياق المنطقة خارجي بالنسبة للتعبير الموجود في نموذج ToolAcre.

ادعى المصنف الساعة التي يقرأها كل برنامج خفي. لا يمكن لهذا المستودع تكوين برنامج خفي أو فحصه، لذا فهو لا يؤسس هذا السلوك العالمي. يمكن فقط أن ينصح بمطابقة منطقة المعاينة مع التفسير الموثق للهدف والتحقق من المجدول المثبت بشكل مستقل.

دعم CRON_TZ خارج هذا المحلل اللغوي ولا تتم المطالبة به

لم يتم تحليل `CRON_TZ`. يفشل إدخاله في مربع التعبير لأنه ليس خمسة حقول، ولا يوجد عنصر تحكم لكل حقل يخزن التوجيه. يدعي المصنف أن أحد التطبيقات يدعمه بينما لا تتطلب التطبيقات الأخرى مصادر غير موجودة هنا.

إذا قام هدف بتوثيق توجيه المنطقة الزمنية، فقم بتكوينه واختباره هناك. لا تتوقع أن يحافظ ToolAcre على التوجيه عند نسخ تعبير. احتفظ ببيانات تعريف المنطقة بجوار الجدول الزمني حتى تتم مراجعة التكوين الخاص بالهدف ونشره.

لم يتم تصميم دلالات بيئة TZ

إن المهمة `TZ` تقع خارج النطاق أيضًا. يستخدم المتصفح خيار `timeZone` صريحًا للتنسيق والتحويل، وليس سطر بيئة داخل ملف crontab. لا يمكن معرفة ما إذا كانت المهمة ستغير تقييم الجدول الزمني أو مخرجات الأمر أو لا شيء على نظام آخر.

يتجنب هذا التصحيح افتراضًا دقيقًا ولكنه مكلف. الأسماء المتشابهة لا تعني أدوارًا متطابقة. تعامل مع تحديد منطقة الجدولة وبيئة العملية كأسئلة منفصلة، ​​وقم بالإجابة على كليهما من التنفيذ المستهدف بدلاً من منشئ التعبير.

تتطلب الإعدادات الافتراضية للحاويات والسحابة أدلة مستهدفة

لا يتم فحص الحاويات والصور السحابية بواسطة المسار. لا يتم الاستعلام عن مقبس Docker أو ساعة المضيف أو خدمة البيانات الوصفية. قد تكون الادعاءات بأنها افتراضية UTC صحيحة في عملية نشر معينة ولكن لا يمكن تعميمها من `Intl.DateTimeFormat` التي تعمل في متصفح القارئ.

التقط المنطقة المستهدفة الفعلية من خلال أدواتها وتكويناتها الموثقة. ثم حدد نفس الاسم IANA في ToolAcre عندما يكون ذلك متاحًا. تعكس قائمة مناطق المتصفح ما يعرفه محركها؛ ولا يثبت أن الهدف يحتوي على بيانات أو إعدادات منطقة متطابقة.

مثال عملي: معاينة 09:00 في منطقتين محددتين بدون تحويل موسمي ذي ترميز ثابت

حافظ على `0 9 * * *` ثابتًا وقم بمعاينة نتيجة واحدة في UTC، ثم في أمريكا/New_York. تعرض كل قائمة 09:00 كوقت حائط، لكن لحظات العصر تختلف حسب إزاحة المنطقة القابلة للتطبيق. تجنب نشر تحويل ساعة دائم واحد لأن الإزاحات الإقليمية يمكن أن تتغير عبر التواريخ.

توضح الاختبارات هذا المبدأ مع UTC ومنتصف ليل طوكيو ومع مهمة يومية في لندن عبر تغيير للأمام. استخدم المرشحين المباشرين للتواريخ قيد المراجعة. إذا أدى النشر إلى تحويل الجدول إلى UTC ساعة ثابتة، فقم بتوثيق القيد الموسمي بدلاً من الإشارة ضمنًا إلى أن قيمة واحدة تحافظ على 09:00 المحلية إلى الأبد.

إن التعامل مع المرشح DST هو سلوك معاينة ToolAcre، وليس ضمانًا خفيًا

ToolAcre ينشئ المرشحين كمكونات تقويم محلية ويحولهم من خلال بيانات منطقة المتصفح. يتم حذف الوقت الربيعي غير الموجود، وتظل الساعة اليومية العادية هي نفس الساعة المحلية عبر عملية انتقال تم اختبارها. هذه هي حقائق تنفيذ المعاينة.

إنها ليست ضمانات التنفيذ لبرنامج خفي أو جدولة سحابية. تحقق من سياسة النقل حيث سيتم تشغيل الوظيفة. يمكن أن تكشف المعاينة عن أحد المخاطر وتوفر اللحظات المتوقعة، بينما يوفر المجدول المنشور ملاحظة موثوقة حول ما إذا كان الإجراء سيبدأ أم لا.

الخلاصة: لا يكتمل الجدول إلا بمنطقته — أنشئ الحقول في المولد، ثم سجل المنطقة الزمنية بجانبها

يكون الجدول غير مكتمل من الناحية التشغيلية بدون سياق المنطقة على الرغم من أن الحقول الخمسة الخاصة به مكتملة من الناحية النحوية. يمثل ToolAcre هذه الحقيقة عن طريق الاحتفاظ بالمنطقة في محدد منفصل وإظهار قائمة ساعات الحائط الناتجة. التعبير المنسوخ وحده لا يمكنه تحمل الاختيار.

سجل التعبير والمنطقة معًا، وتحقق من التكوين المستهدف وأعد زيارة المرشحين بالقرب من تغييرات الإزاحة. يقوم المولد بإنشاء الجداول الزمنية وشرحها؛ ولا يقوم بتعيين ساعة الخادم أو كتابة توجيهات المنطقة الزمنية أو تنفيذ الوعد. هذا الحد يجعل المعاينة مفيدة دون المبالغة في التحكم.