العربية

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

خطوة Cron وبناء جملة النطاق: */15, 1-5، القوائم وكيفية دمجها

· كيف يعمل

كرون جدولة سير عمل المطور

علامات الدقائق مجمعة في نطاق وقائمة وتسلسل متدرج
الرسم التوضيحي المتجه الأصلي ToolAcre

الخطوات والنطاقات والقوائم هي جزء من بناء جملة cron الذي ينسخه الأشخاص دون فهم. يشرح هذا المنشور كل منها، وكيفية تداخلها، والمفاجآت مثل */7 لا تعني "كل سبعة أيام".

كل 15 دقيقة، ولكن فقط 9 إلى 5 — ينطلق التعبير الساذج في الليل أيضًا

"كل خمس عشرة دقيقة خلال ساعات العمل" تحتوي على قيدين مستقلين. يحتاج حقل الدقيقة إلى علامات ربع ساعة، بينما يحتاج حقل الساعة إلى نطاق محدد. كتابة `*/15 * * * *` فقط تحل النصف الأول ولا تزال تؤدي إلى استمرار التشغيل طوال الليل. يجب أن يقوم التعبير بتشفير كلا التقييدين قبل أن يذكر أي شيء عن أيام الأسبوع.

ToolAcre يوزع حقول الجدول الخمسة، وليس أمرًا. ابدأ بـ `*/15 9-17 * * 1-5`، ثم افحص الجملة ومعاينة التشغيل التالي. اكتشف هذا الفحص الخطأ الشائع المتمثل في وضع `9-17` في موضع الدقيقة أو ترك حقل أيام الأسبوع غير مقيد. يقوم المولد بإنشاء وشرح التعبير؛ لا يقوم بتثبيت أو تنفيذ مهمة.

النطاقات — 1-5 و9-17 كنطاقات شاملة داخل حقل واحد

تقوم الواصلة بإنشاء نطاق شامل داخل حقل واحد. `9-17` في موضع الساعة يمتد إلى تسع قيم: 9 إلى 17. وبالمثل، فإن `1-5` في موضع أيام الأسبوع يمتد إلى الاثنين إلى الجمعة لأن هذا المحلل يعين الأحد إلى 0، والاثنين إلى 1، وهكذا. تشارك كلا نقطتي النهاية، لذا فإن 17:00 يقع ضمن نطاق الساعة المحدد.

لا يمكن التفاف النطاقات عبر حدود الحقل. يرفض المحلل اللغوي النموذج العكسي مثل `17-9` ويقترح تقسيم القيم المطلوبة إلى عنصري قائمة. يعد هذا الرفض مفيدًا لأن قواعد الالتفاف تختلف بين جدولة المنتجات. هنا يتحرك النطاق دائمًا لأعلى بين القيم التي تفي بالفعل بالحدود الرقمية أو حدود الاسم المقبولة للحقل.

الخطوات — */15 و9-17/2, ولماذا تتم إعادة تشغيل الخطوة عند الحد الأدنى للحقل بدلاً من العد بشكل مستمر

تختار الشرطة المائلة كل قيمة n من نقطة البداية. `*/15` في حقل الدقائق يبدأ عند الحد الأدنى، صفر، ويمتد إلى 0، 15، 30 و 45. `9-17/2` يبدأ عند 9 وينتج 9، ​​11، 13، 15 و17. تنتمي الخطوة إلى حقل واحد؛ ولا يحسب الدقائق المنقضية عبر حدود الساعة.

يقبل المحلل اللغوي أيضًا بداية مجردة بخطوة. `5/15` في حقل الدقيقة يعني 5، 20، 35 و 50 لأن نقطة النهاية العليا الضمنية هي 59. يجب أن تكون الخطوات أرقامًا صحيحة موجبة ولا يمكن أن تتجاوز حجم النطاق الكامل للحقل. تتلقى الخطوة الصفرية أو غير الرقمية أو كبيرة الحجم خطأً في التحقق من الصحة خاصًا بالحقل بدلاً من التفسير التخميني.

يمكن للقوائم دمج القيم والنطاقات والنطاقات المتدرجة في حقل واحد

الفواصل توحد عدة قطع في نفس المجال. `1,15,30` بسيط يسمي قيم ثلاث دقائق. يمكن أن يجمع الإدخال الأكثر تفصيلاً بين قيمة وحيدة ونطاق شامل ونطاق متدرج: يتم توسيع `0,10-20/5,59` الذي تم اختباره إلى 0 و10 و15 و20 و59. تتم إزالة النتائج المكررة ويتم فرز القيم الموسعة قبل أن تستخدمها الحسابات اللاحقة.

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

مثال عملي: */15 9-17 * * 1-5 — تعداد الدقائق التي ينتجها وحالة الحافة 17:45

بالنسبة إلى `*/15 9-17 * * 1-5`، قيم الدقائق هي 00، 15، 30 و45؛ الساعات من 09 إلى 17؛ وقيم أيام الأسبوع هي من الاثنين إلى الجمعة. في كل يوم من أيام الأسبوع، المرشح الأول هو 09:00 والمرشح الأخير هو 17:45. لا يوجد 18:00 لأن 18 يقع خارج نطاق الساعة.

توضح الحافة التي تم تشغيلها مؤخرًا سبب تفوق توسيع المجال على اختزال المحادثة. قد تعني عبارة "تسعة إلى خمسة" التوقف عند 17:00 لأحد القراء وإضافة الساعة الخامسة كاملة لقارئ آخر. يقوم حقل ساعة Cron بتحديد مجموعة من الساعات، ثم يقوم حقل الدقائق بتحديد المواضع بداخلها. إذا كان 17:45 غير مرغوب فيه، فإن الحد المطلوب يحتاج إلى تعبير مختلف أو منطق جانب الأمر.

يتم توسيع خطوة يوم من الشهر من اليوم 1 من كل شهر؛ وهي ليست فاصل زمني للأسبوع المنقضي

يتم توسيع `*/7` في يوم من الشهر من الحد الأدنى لهذا الحقل وهو 1، مما يؤدي إلى إنتاج 1 و8 و15 و22 و29 حيث توجد تلك التواريخ. عندما يبدأ الشهر التالي، يبدأ الحقل مرة أخرى عند 1. ولذلك فهو يصف تواريخ تقويمية مختارة، وليس فترة زمنية مدتها سبعة أيام تتقدم باستمرار. فبراير والأشهر الأقصر تفتقر ببساطة إلى بعض التواريخ العالية.

نفس بناء الجملة له قيمة بداية مختلفة في حقل آخر. `*/7` دقيقة تبدأ في 0، بينما `*/7` يوم من الشهر يبدأ في 1. يستمد المحلل اللغوي ToolAcre التسلسل من كل مواصفات الحقل، وتقوم معاينته بالبحث في تواريخ التقويم. للحصول على إيقاع أسبوعي فعلي، قم بتقييد يوم من الأسبوع بدلاً من التعامل مع خطوة يوم من الشهر على أنها المدة المنقضية.

يتم رفض العوامل غير المدعومة بدلاً من تفسيرها على أنها لهجة كرون أخرى

لا يقوم هذا المحلل اللغوي المكون من خمسة حقول بتنفيذ `L` أو `W` أو `#` أو `?`. لا يتم تجاهل هذه الأحرف بصمت ولا يتم تقديمها كتركيب crontab محمول. تم رفض ستة حقول أيضًا، مع توضيح أن موضع البادئة الإضافي ينتمي إلى نمط جدولة موجه للثواني بدلاً من التنسيق الذي يقرأه هذا المسار.

الحدود متعمدة: الدقيقة والساعة واليوم من الشهر والشهر واليوم من الأسبوع هي القواعد الموضعية الكاملة هنا. قبل نقل تعبير من برنامج جدولة آخر، قم بعد حقوله وحدد عوامل تشغيله. يمكن للمولد التحقق من صحة لهجته الخاصة؛ ولا يمكنها التصديق على نظام Quartz أو صيغة تقويم systemd أو شكل الخدمة السحابية.

الوجبات الجاهزة: الخطوات تعني "البدء من أسفل النطاق" - ويشرح المولد تعبير الخطوة بكلمات يمكنك التحقق منها

تحدد النطاقات نطاقًا شاملاً، وتدمج الفواصل، وتقطع قيم العينات من بداية خاصة بالحقل. تؤدي قراءة هذه العمليات بهذا الترتيب إلى تحويل الرمز المميز الكثيف إلى مجموعة محدودة يمكن فحصها. كما أنه يشرح حوافًا مثل 17:45 دون الاعتماد على عبارة منسوخة ربما كان مؤلفها يقصد شيئًا آخر.

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