تحليل وفهم تعبيرات Cron في جدولة المهام
تُستخدم تعبيرات Cron بشكل واسع في أنظمة التشغيل وبيئات التطوير لجدولة المهام المؤتمتة في أوقات محددة. يتكون التعبير القياسي من صيغة نصية مدمجة قد يصعب تفسيرها بصرياً بمجرد النظر إليها. تتيح أداة "محلل تعبيرات Cron" تفكيك هذه التعبيرات إلى مكوناتها الأساسية وعرض تفاصيل كل حقل بوضوح، بالإضافة إلى حساب أوقات التشغيل القادمة بناءً على المدخلات.
تساعد هذه الأداة المطورين الذين يحتاجون إلى التحقق من تكوينات جدولة المهام، ومسؤولي العمليات الذين يديرون المهام المجدولة، وموظفي الدعم الفني الذين يقومون باستكشاف أخطاء العمليات المجدولة وإصلاحها.
مكونات تعبير Cron وحقوله الخمسة
تعتمد الأداة على صيغة cron القياسية المكونة من 5 حقول تفصل بينها مسافات. يمثل كل حقل بُعداً زمنياً محدداً يتم تحليله وعرضه في قسم "تفاصيل الجدول" كالتالي:
- دقيقة: يحدد الدقائق التي يتم تشغيل المهمة عندها.
- ساعة: يحدد الساعات التي تنفذ فيها المهمة.
- يوم من الشهر: يحدد أيام الشهر التقويمية.
- شهر: يحدد الأشهر التي تعمل خلالها المهمة.
- يوم من الأسبوع: يحدد أيام الأسبوع المحددة للتنفيذ.
عند إدخال التعبير، تقوم الأداة بتحليل كل حقل وعرض قيمته المفككة. إذا كان الحقل يحتوي على رمز النجمة * (Wildcard)، فإن الأداة تعرض عبارة "أي" للإشارة إلى عدم وجود قيود على هذا الحقل. أما بالنسبة للصيغ التي تستخدم الخطوات مثل */n، فإن الأداة تترجمها ديناميكياً حسب الحقل لتظهر كالتالي:
- "كل
{n}دقائق" لحقل الدقائق. - "كل
{n}ساعات" لحقل الساعات. - "كل
{n}أيام" لحقل يوم من الشهر. - "كل
{n}أشهر" لحقل الشهر. - "كل
{n}أيام" لحقل يوم من الأسبوع.
التنسيقات المدعومة والاختصارات
يدعم المحلل مجموعة متنوعة من التنسيقات القياسية التي تسهل كتابة الجداول الزمنية المعقدة:
- النطاقات: مثل
1-5لتحديد مجال مستمر من القيم. - الخطوات: مثل
*/15لتكرار المهمة عند فواصل زمنية محددة. - القوائم: مثل
1,15لتحديد قيم منفصلة غير متتالية. - الأسماء المكتوبة: يدعم أسماء الأشهر المختصرة مثل
JANوأيام الأسبوع مثلMON. - الاختصارات الجاهزة: يدعم التعبيرات البديلة الشائعة التي تبدأ برمز
@وهي:@yearly@monthly@weekly@daily@hourly.
تجدر الإشارة إلى أن الأداة لا تدعم الحقل السادس الخاص بالثواني، كما لا تدعم امتدادات Quartz الخاصة مثل الرموز L أو W أو #.
قواعد المعالجة والحالات الخاصة
عند صياغة تعبيرات Cron، هناك قواعد محددة تحكم كيفية تفسير النظام للجدول الزمني:
التفاعل بين يوم الشهر ويوم الأسبوع
عند تقييد كل من حقل "يوم من الشهر" وحقل "يوم من الأسبوع" بقيم محددة (أي عندما لا يكون أي منهما يحتوي على الرمز *)، فإن الأداة والمجدول يعتمدان قاعدة المطابقة المرنة. يكفي في هذه الحالة تحقق شرط واحد فقط من الحقلين لكي يتم تشغيل المهمة، ولا يشترط تطابقهما معاً في نفس الوقت.
الجداول المستحيلة (التي لا يمكن حدوثها)
إذا كان التعبير سليماً من الناحية النحوية ولكنه يمثل جدولاً زمنياً يستحيل تطبيقه عملياً، فإن الأداة تكتشف ذلك وتعرض رسالة الخطأ التالية: "لا يمكن حدوث هذا الجدول أبدًا — تحقق من وجود يوم من الشهر غير موجود في كل شهر محدد". يحدث هذا التعارض عادةً عند تحديد اليوم 31 في حقل "يوم من الشهر" مع إدراج أشهر تتكون من 30 يوماً فقط أو أقل في حقل "شهر" (مثل أبريل، يونيو، سبتمبر، أو نوفمبر).
الأخطاء النحوية وحالة الإدخال
- إذا كان التعبير المدخل غير صحيح من حيث البنية أو يحتوي على رموز غير مدعومة، تظهر رسالة "تعبير كرون غير صالح".
- إذا تم مسح حقل الإدخال بالكامل، تعود الأداة إلى حالة الاستعداد وتعرض عبارة "أدخل تعبير cron لتحليله".
تأثير المناطق الزمنية ومعاينة التشغيل القادم
تقوم الأداة بحساب وعرض قائمة بأوقات التشغيل القادمة بناءً على التعبير المدخل. تتيح الأداة التحكم في عدد هذه المرات المعروضة عبر حقل "عدد"، حيث يمكن ضبطه لعرض ما بين 1 إلى 20 وقتاً مستقبلياً.
يتم حساب أوقات التشغيل القادمة وعرضها بالاعتماد على المنطقة الزمنية المحلية لمتصفح المستخدم، ويظهر بجانبها التوضيح "(توقيتك المحلي)". من المهم تذكر أن تعبيرات cron القياسية لا تحتوي على معلومات المنطقة الزمنية ضمن بنيتها النصية، بل يتم تنفيذها بناءً على توقيت الخادم أو البيئة التي تشغلها. لذلك، توفر هذه المعاينة تصوراً دقيقاً للتشغيل مقارنةً بساعة جهازك الحالي.
معالجة البيانات والخصوصية
تتم عملية تحليل تعبير Cron بالكامل محلياً داخل متصفح الويب الخاص بك. لا يتم إرسال أي بيانات أو تعبيرات مدخلة إلى خوادم BroBroGo، مما يضمن معالجة البيانات في بيئتك المحلية دون أي عمليات رفع خارجية.
الأسئلة الشائعة
ما هو بناء جملة cron الذي تدعمه هذه الأداة؟ صيغة cron القياسية ذات الحقول الخمسة: الدقيقة والساعة ويوم الشهر والشهر ويوم الأسبوع. تدعم النطاقات (1-5) والخطوات (*/15) والقوائم (1,15) وأسماء الأشهر وأيام الأسبوع (JAN وMON) والاختصارات @yearly و@monthly و@weekly و@daily و@hourly. وانتبه إلى أنه إذا قُيّد كل من يوم الشهر ويوم الأسبوع (أي لم يكن *)، فيكفي تطابق أحدهما ولا يلزم أن يتطابقا معًا.
ما هي المنطقة الزمنية التي تظهر فيها أوقات التشغيل التالية؟ المنطقة الزمنية المحلية لمتصفحك، وهي نفسها التي تستخدمها ساعة نظامك. لا تتضمن صيغة cron القياسية منطقة زمنية؛ يحددها مُجدول المهام الذي يشغّلها. لذا اعتبر هذه الأوقات معاينة لجدولك المحلي، وليس بالضرورة لجدول الخادم.
لماذا يقول هذا الجدول الزمني لا يمكن أن يحدث أبدا؟ عادةً ما تكون قيمة يوم من الشهر غير موجودة في كل شهر محدد - على سبيل المثال، اليوم 31 مع أبريل أو يونيو أو سبتمبر أو نوفمبر في حقل الشهر. اختر يومًا موجودًا في جميع الأشهر التي قمت بإدراجها، أو قم بتقسيم الجدول إلى تعبيرات منفصلة.