أدوات المطورين · مولد Crontab
Cron والتوقيت الصيفي: لماذا يمكن تخطي مهمة 02:30 أو تشغيلها مرتين
· لماذا يهم
كرون المناطق الزمنية التوقيت الصيفي
تقفز ساعة الحائط مرتين في السنة، وتتصرف مهمة cron المجدولة في الفجوة أو التداخل بشكل غير متوقع. يشرح هذا المنشور ما تفعله crons المشتقة من Vixie، وما يفعله الآخرون، وكيفية التخطيط له.
يمكن أن يحدث مرشح معاينة مفقود عندما لا تحتوي المنطقة المحددة على وقت ساعة الحائط هذا
يمكن أن يغيب وقت ساعة الحائط اليومي في تاريخ تقوم فيه منطقة زمنية محددة بتحريك ساعاتها للأمام. يمثل ToolAcre هذه الحالة من خلال عدم إرجاع أي لحظة للدقيقة المحلية غير الموجودة وتخطيها في قائمة التشغيل التالية. يظل التعبير صالحًا؛ لا يمكن ببساطة تحويل مرشح تقويم واحد إلى لحظة حقيقية في تلك المنطقة.
يتم تنفيذ هذا السلوك في `wallClockToEpoch`، الذي يحول التاريخ والوقت المحليين المقترحين، وينسق النتيجة مرة أخرى في نفس المنطقة ويقارن كل مكون. يؤدي عدم التطابق إلى إرجاع قيمة فارغة. `nextRuns` يتجاهل المرشحين الفارغين ويستمر في البحث، مما يمنع الوقت القريب المفبرك من الظهور كما لو كان مطابقًا تمامًا للجدول.
الحدثان: الربيع للأمام الذي يزيل ساعة، وتراجع الخريف الذي يكرر واحدة
تؤدي تغييرات الساعة إلى إنشاء حالتين مفاهيميتين: فجوة أمامية مع أوقات حائط لا تحدث أبدًا، وتداخل خلفي حيث تحدث بعض التسميات أكثر من مرة. يحتوي المستودع على اختبارات للحفاظ على ساعة محلية يومية عبر التغيير الأمامي ولحذف وقت ربيعي غير موجود. ولا يحتوي على مجموعة اختبار سياسة التداخل الكاملة.
تعتبر حدود الأدلة هذه مهمة لأن تطبيقات الجدولة يمكن أن تقوم باختيارات متميزة. توضح هذه المقالة خوارزمية معاينة المتصفح، وليس سلوك البرنامج الخفي العالمي. قبل الاعتماد على مهمة متكررة أثناء انتقال الساعة، قم بقراءة واختبار المجدول الفعلي على المضيف المستهدف بدلاً من ترقية المعاينة إلى وعد بالتنفيذ.
ToolAcre يحذف الأوقات المحلية غير الموجودة؛ إنها لا تمثل نموذجًا لكل سياسة خفية مشتقة من Vixie
ادعى المصنف أن برامج خفية معينة مشتقة من Vixie تقوم بتشغيل المهام التي تم تخطيها بعد القفزة وقمع التكرارات. ToolAcre لا يفعل أيًا من ذلك في رمز المعاينة الخاص به: فهو يحذف مرشحًا لا يمكن لمكوناته المحلية أن تتنقل ذهابًا وإيابًا. لم يتم استدعاء أي حزمة خفية، ولم يتم وضع نموذج لسياسة اللحاق بالركب. ولذلك يتم تصحيح تلك المطالبات التشغيلية بدلا من تكرارها.
يبحث مثال لندن الذي تم اختباره عن 01:30 في وقت تغيير 2026 في شهر مارس. ونظرًا لعدم وجود هذه الدقيقة المحلية في تاريخ النقل، فإن الأيام التي تم إرجاعها هي التواريخ الصالحة التالية. وهذا يثبت سلوك القائمة الخاصة بالمسار. ولا يحدد ما تفعله عملية cron المثبتة بشكل منفصل مع الخط المحفوظ بالفعل.
يعد سلوك جدولة أحرف البدل في البرامج الخارجية خارج دليل المستودع
يتم توسيع النجوم إلى كل قيمة مسموح بها بواسطة المحلل اللغوي، لكن التحويل اللاحق لساعة الحائط لا يزال يقرر ما إذا كان تاريخ ووقت معين سيتم تعيينه للحظة. لا يحتوي ToolAcre على قاعدة خارجية منفصلة لـ "وظائف أحرف البدل". يسافر جميع المرشحين من خلال نفس البحث في التقويم ورمز تحويل المنطقة.
تظل الأوصاف نحوية بحتة: `* * * * *` تتم قراءتها في كل دقيقة، بينما يتلقى حقل الدقائق المتدرجة صياغة الخطوة. الجملة لا تروي سياسة الانتقال. استخدم قائمة التشغيل التالي للأمثلة المحسوبة للأداة، ولا تستنتج ضمان اللحاق بالركب أو إعادة المحاولة أو قمع التكرار من النثر وحده.
لا يتم استنتاج التطبيقات الأخرى من معاينة المتصفح هذه
يعتمد تنفيذ المنطقة على البيانات `Intl.DateTimeFormat` التي يكشفها المتصفح أو وقت تشغيل العقدة. ToolAcre يتحقق من صحة اسم منطقة IANA المقدم، ويقدم قائمة المحرك المدعومة عندما تكون متاحة وتتضمن UTC. ولا يقوم بفحص BusyBox أو منسقي الحاويات أو منتجات Cloud cron.
عندما يختلف برنامج جدولة آخر، تعامل مع ذلك كسؤال لهجة ووقت تشغيل. قم بتسجيل نسخته وتكوين المنطقة وسلوك الانتقال الملحوظ. لا تزال معاينة المتصفح مفيدة كمقارنة شفافة، لكن الكود الخاص بها لا يمكنه الإجابة على السياسة التي تطبقها خدمة أخرى أو ما إذا كانت تلك الخدمة تعيد محاولة العمل الفائت.
مثال عملي: اختر وقتًا جداريًا وافحص المرشحين المحسوبين لـ ToolAcre
تتمثل الطريقة الأكثر أمانًا في تحديد منطقة النشر وإدخال التعبير اليومي المقترح وفحص التواريخ حول الانتقال التالي المعروف لتلك البيئة. في حالة غياب المرشح المطلوب، اختر وقت جداري آخر أو سياسة جدولة يوثقها الهدف بشكل واضح. أعد تشغيل المعاينة بعد تغيير الساعة.
يتضمن المصدر إعدادًا مسبقًا عند 02:30، ولكن الإعداد المسبق هو مثال وليس توصية عامة. تعتمد صلاحيتها على التقويم والمنطقة المحددة. قد لا تمتد نافذة النتائج الخمس لـ ToolAcre إلى فترة انتقالية بعيدة، لذا اختر سياق بداية مناسبًا في الاختبارات عند تدقيق سلوك التنفيذ.
يعد تحديد المنطقة جزءًا من هذه المعاينة ويتم مناقشته هنا فقط كسلوك الأداة
على عكس فصل المصنف، تعد معالجة المنطقة جزءًا مباشرًا من معاينة هذه الأداة. تطلب اللوحة "إظهار عمليات التشغيل التالية" وتحذر من أن الجهاز الذي يقوم بتشغيل cron قد يستخدم منطقة مختلفة عن القارئ. يؤدي اختيار منطقة إلى تغيير اللحظات الناتجة مع الحفاظ على حقول ساعة الحائط الخاصة بالتعبير.
يقوم التحديد بتكوين حساب المتصفح فقط. ولا يكتب توجيهًا للمنطقة الزمنية أو يقوم بتحديث الخادم أو تضمين الاختيار في التعبير المنسوخ. احتفظ بالمنطقة المقصودة في وثائق النشر المجاورة، ثم قم بتكوين المجدول الفعلي من خلال آليات مثبتة لتلك البيئة.
الخلاصة: المعاينة في المنطقة المقصودة دون اعتبار القائمة ضمانة للتنفيذ
قائمة التشغيل التالية عبارة عن مخرجات نموذجية من خمسة حقول، ولحظة البداية، وحساب التقويم، وبيانات منطقة المتصفح. إنه مفيد لاكتشاف الأوقات غير الموجودة وتحولات الساعات العرضية. لا يبقى أثرًا خفيًا ولا دليلاً على تنفيذ الأمر.
استخدم المعاينة لتحديد أوقات الحائط المحفوفة بالمخاطر، ثم تحقق من المجدول المستهدف عند حدود الانتقال. يعد وعد ToolAcre الذي يمكن الدفاع عنه ضيقًا: حيث تظل الوظائف اليومية في الساعة المحلية المحددة عند وجود تلك الساعة، ويتم حذف المرشحين المحليين غير الموجودين. كل ما هو أبعد من ذلك ينتمي إلى النظام المنتشر.