Command Palette

Search for a command to run...

محلل تعبير كرون: فك تشفير أي جدول زمني إلى اللغة الإنجليزية البسيطة

محلل تعبير كرون: فك تشفير أي جدول زمني إلى اللغة الإنجليزية البسيطة

T
Toolz Team
|Jul 12, 2026|22 دقيقة قراءة

جزء من مجموعة الوقت والتاريخ

أغلى تعبير كرون كتبته على الإطلاق كان 0 0 * * 0. لقد تم تشغيل ملخص أسبوعي للبريد الإلكتروني لـ Laravel SaaS الذي كنت أقوم بإنشائه، وكنت متأكدًا تمامًا من أنه يعني &quot؛ منتصف الليل في اليوم الأخير من الأسبوع.&اقتباس؛ يعني منتصف ليل الأحد. قال نموذجي العقلي أن الأسبوع انتهى يوم السبت. لمدة خمسة أسابيع، حصل العملاء على &quot؛ أسبوع في المراجعة والاقتباس؛ أرسل بريدًا إلكترونيًا متأخرًا بيوم واحد، ولم يتمكن أحد في الفريق من قراءته أيضًا - لقد حدقنا جميعًا في الحقول الخمسة وأومأنا برأسنا.

That&#39؛ هو السر القذر لبناء جملة كرون: تقريبًا كل من يكتبه يكون مطابقًا للنمط من تعبير سابق نصف يتذكره. يبلغ عمر التنسيق أكثر من أربعين عامًا، وهو كثيف بدرجة كافية بحيث يغير حرف واحد الجدول الزمني تمامًا، ويفشل بصمت. هناك&#39؛ لا يوجد خطأ في المترجم لـ &quot؛ يعمل في اليوم الخطأ.&quot؛ يتم تشغيل المهمة في اليوم الخطأ، إلى الأبد، حتى يلاحظ شخص ما.

أ محلل التعبير كرون يغلق تلك الفجوة. أنت تلصق التعبير، ويخبرك باللغة الإنجليزية البسيطة بما سيحدث بالفعل - 0 0 * * 0 يعود كـ &quot؛ في الساعة 00:00، يوم الأحد والاقتباس؛ - بالإضافة إلى متى سيتم تشغيل عمليات التشغيل التالية. خطوة إعادة القراءة هذه هي الفرق بين شحن جدول زمني وشحن التخمين. لقد قمت ببناء الخيار على Toolz.dev لأنني سئمت من تبديل السياق إلى محطة طرفية، ولأن فوضى wp-cron التي تعاملت معها لسنوات في WP Adminify علمتني أن أخطاء الجدولة هي أكثر الأخطاء صبرًا في البرامج.

يغطي هذا الدليل كيفية استخدام المحلل اللغوي، وكيفية عمل الحقول الخمسة فعليًا (بما في ذلك المراوغتين اللتين تسببان معظم حوادث الإنتاج)، وأين يختلف بناء جملة cron كرونتاب، GitHub الإجراءات، الكوارتز، ولارافيل.

ليرة تركية؛DR: لصق أي تعبير crontab في Toolz.dev محلل كرون واحصل على ترجمة باللغة الإنجليزية البسيطة بالإضافة إلى أوقات التشغيل القادمة - على الفور، من جانب العميل، بدون تسجيل. قبل نشر جدول زمني، تحقق دائمًا من شيئين: ترقيم اليوم من الأسبوع (0 و7 كلاهما يوم الأحد) والمنطقة الزمنية التي يعمل فيها المجدول (إجراءات GitHub هي دائمًا UTC). إقرانها مع محول الطابع الزمني عندما تحتاج إلى ترجمة أوقات التشغيل التالية عبر المناطق، و حاسبة فرق التاريخ للتحقق من صحة الفواصل الزمنية.


الميزات الرئيسية

ترجمة باللغة الإنجليزية البسيطة

المهمة الأساسية للمحلل هي الدوران */15 9-17 * * 1-5 في &quot؛ كل 15 دقيقة بعد الساعة 9 و10 و11 و12 و13 و14 و15 و16 و17، أيام الاثنين والثلاثاء والأربعاء والخميس والجمعة.&quot؛ It&#39؛ مطولة - فهي تعدد بدلاً من الانهيار والاقتباس؛9 إلى 17&اقتباس؛ العودة إلى النطاق - وهذا الإسهاب هو النقطة. التعداد لا لبس فيه؛ النطاق الملخص هو فرصة أخرى للقراءة الخاطئة. الجملة هي شيء يمكنك لصقه في وصف طلب السحب، أو القراءة بصوت عالٍ في وضع الوقوف، أو إظهار صاحب مصلحة غير تقني. التعبير الخام ليس كذلك. من خلال تجربتي، الترجمة هي الأكثر أهمية أثناء مراجعة التعليمات البرمجية: المراجع الذي سيختم خمسة حقول غامضة سوف يلتقط ويقتبس على الفور؛ انتظر، لماذا تظهر الساعة 17 عندما من المفترض أن تتوقف المهمة عند الساعة 5 مساءً؟&quot؛ عندما يتم توضيح كل ساعة. الترجمة تجعل الجدول الزمني قابلاً للتزوير، وهو بالضبط ما يفشل بناء جملة cron الخام فيه.

معاينة التشغيل التالية

معرفة ما التعبير وسائل هو نصف المشكلة؛ معرفة متى الحرائق القادمة هو النصف الآخر. يحسب المحلل اللغوي أوقات التنفيذ الخمس التالية حتى تتمكن من مقارنتها بنواياك. هذا هو المكان الذي تظهر فيه الأخطاء الدقيقة - وهو تعبير يُقرأ بشكل جيد باللغة الإنجليزية ولكنه ينتج تشغيلًا تاليًا لـ &quot؛ في 27 يومًا واقتباسًا؛ لأنك خلطت بين يوم من الشهر وشهر، أو يوم يتم إطلاقه في الساعة 03:00 الليلة عندما تقصد الساعة 03:00 بعد عطلة نهاية الأسبوع. أتحقق من قائمة التشغيل التالي في كل مرة الآن، حتى بالنسبة للتعبيرات I&#39؛ أنا واثق منها. خاصة بالنسبة للتعبيرات I&#39؛ أنا واثق منها - راجع الحكاية الافتتاحية.

تفصيلان حول كيفية حساب تلك الأوقات. أولاً، هم &#39؛ تم تقييمهم في متصفحك &#39؛s المنطقة الزمنية المحلية، ليس UTC وليس منطقة الخادم &#39؛s - يتم عرض كل تشغيل مرتين، مرة كطابع زمني محلي ومرة كلحظة UTC مكافئة، حتى تتمكن من قراءة أيهما يطابق هدف النشر الخاص بك. ثانيًا، عندما يكون كل من يوم الشهر ويوم الأسبوع مقيدين، يطبق المحلل اللغوي cron&#39؛s أو دلالات حقيقية بدلاً من AND: 0 0 1 * 1 الحرائق في الأول من الشهر و في كل يوم اثنين، وليس فقط في أيام الاثنين التي تقع في الأول. هذه القاعدة تتعثر مع الأشخاص ذوي الخبرة، ورؤية خمسة تواريخ محددة تجعل الأمر واضحًا بطريقة لا توضحها الجملة أبدًا.

حافة خشنة واحدة: تعبير مستحيل مثل 0 0 30 2 * (30 فبراير) يوزع على أنه صالح، ويصف نفسه بسعادة بـ &quot؛ في الساعة 00:00، في اليوم 30 من الشهر، في فبراير، &quot؛ ثم يعرض قائمة التشغيل التالية الفارغة. فارغة تعني أبدًا. It&#39؛s صحيح، لكنه&#39؛s هادئ - a &quot؛ هذا الجدول الزمني لن يطلق النار أبدًا؛ التحذير هو التحسن الواضح وأنا قمت ببنائه &#39؛t بعد.

تقسيم ميدان حسب المجال

يقوم المحلل بتقسيم التعبير إلى مكوناته الخمسة - الدقيقة، الساعة، اليوم من الشهر، الشهر، يوم الأسبوع - ويوضح ما يساهم به كل واحد. وهذا مهم لأن أخطاء cron تكون دائمًا مشكلة حقل واحد: القيمة الصحيحة في العمود الخطأ. 0 12 * * * (ظهرا يوميا) و 12 0 * * * (12:12 صباحًا يوميًا... لا، 00:12 يوميًا) عبارة عن مبادلة واحدة. رؤية وحاصل؛ الساعة: 0&حاصل؛ المسمى بشكل صريح هو كيفية التقاط هذا المبادلة في ثانيتين بدلاً من أسبوعين.

دعم النطاقات والخطوات والقوائم

تعتمد تعبيرات العالم الحقيقي بشدة على بناء جملة المشغل 1-5 النطاقات، */10 خطوات، 1,15 القوائم والمجموعات مثل 0 8-18/2 * * 1,3,5. يتعامل المحلل اللغوي مع كل ذلك، بما في ذلك النماذج المدمجة التي تتعثر بالقراء البشريين. قيم الخطوة على النطاقات - 8-18/2 المعنى والاقتباس؛ كل ساعتين من 8 إلى 18&اقتباس؛ - قانونية ومفيدة وغير قابلة للقراءة تقريبًا بدون أدوات. إذا كنت &#39؛ لقد ورثت crontab مليئًا بهذه الأشياء من مسؤول النظام الراحل، فأنت تعرف سبب وجود هذه الميزة.

التحقق الصارم من خمسة مجالات (بما في ذلك ما فاز به &#39؛ قبول)

يأخذ المحلل اللغوي تعبيرات قياسية من خمسة مجالات ولا شيء غير ذلك. لصق @daily وتحصل على خطأ - &quot؛ الحقول الخمسة المتوقعة (دقيقة ساعة يوم من الشهر شهر يوم من الأسبوع)، حصلت على 1&quot؛ - ليست ترجمة. نفس الشيء ل @hourly، @weekly، و @reboot. That&#39؛s فجوة حقيقية وليس مبدأ التصميم، وI&#39؛ أفضل أن تقول ذلك بدلاً من السماح لك بمعرفة منتصف التصحيح؛ تعد وحدات الماكرو المختصرة شائعة بدرجة كافية في crontabs الحقيقية بحيث تنتمي إلى الأداة. حتى &#39؛ إعادة، ترجمة يدويا: @hourly يكون 0 * * * *، @daily يكون 0 0 * * *، @weekly يكون 0 0 * * 0، @monthly يكون 0 0 1 * *، @yearly يكون 0 0 1 1 *. @reboot ليس له ما يعادل خمسة مجالات على الإطلاق - إنه &#39؛ في جدول زمني، يتم تشغيله مرة واحدة عند بدء تشغيل البرنامج الخفي، وهي حقيقة فاجأت الكثير من الأشخاص الذين يقومون بعمليات ترحيل من crontab.

الصرامة تؤتي ثمارها في مكان آخر. يتم رفض تعبير الكوارتز المكون من ستة مجالات مع عدد الحقول بدلاً من أن تتم قراءته بشكل خاطئ بصمت. القيم خارج النطاق تسمي الحقل والنطاق القانوني (Value 25 out of range for hour (allowed 0-23)). النطاقات المعكوسة مثل 5-1 تم القبض عليهم. ويقبل الأشياء التي تحتوي عليها crontabs الحقيقية: أسماء الأشهر والأيام (JAN، SUN7 كتهجئة ثانية ليوم الأحد، وVixie 5/15 معنى النموذج والاقتباس؛ كل 15 بدءًا من 5&quot؛. يستحق المعرفة أثناء تواجدك &#39؛ إعادة ترجمة وحدات الماكرو هذه يدويًا: كل @daily يتم تشغيل المهمة على الخادم في نفس اللحظة - منتصف الليل - لذا فإن أربعين منها عبارة عن ارتفاع في التحميل الليلي. أنا أنثر الألغام عبر دقائق غريبة (17 3 * * *، 43 4 * * *) لهذا السبب بالضبط.

المعالجة من جانب العميل

يعمل المحلل اللغوي بالكامل في متصفحك. لا يتم تحميل أي شيء تقوم بلصقه أو تسجيله أو تخزينه. يبدو ذلك بمثابة لغة خصوصية معيارية حتى تتذكر ما تحتويه crontabs فعليًا: جدول النسخ الاحتياطي الخاص بك، وتوقيت تشغيل الفواتير، والدقيقة الدقيقة التي يقوم فيها الأمان بفحص الحريق. جدولة البنية التحتية هي بيانات الاستطلاع. إبعادها عن الأشخاص الآخرين وخوادم #39؛ هي & #39؛ جنون العظمة؛ it&#39؛s فقط لا تخلق مشكلة حيث لا حاجة لوجود أي منها.


كيفية استخدام محلل كرون

الخطوة 1: لصق أو كتابة التعبير الخاص بك

افتح ال محلل كرون وقم بإسقاط التعبير - من ملف crontab، أ schedule: قم بحظر سير عمل GitHub Actions، أو بيان Kubernetes CronJob، أو Laravel ->cron() يتصل. بناء الجملة القياسي المكون من خمسة مجالات يعمل كما هو؛ @daily وإخوتها لا &#39؛ر، لذا قم بتوسيع تلك الحقول إلى خمسة حقول أولاً. ثم اضغط على تحليل. إذا كنت &#39؛ فبدءًا من الصفر بدلاً من فك التشفير، تقوم الأزرار المعدة مسبقًا (كل دقيقة، كل ساعة، يوميًا عند منتصف الليل، أيام الأسبوع 9 صباحًا، الأول من الشهر) بتحميل تعبير عمل يمكنك تعديله حقلًا تلو الآخر، وإعادة التحليل أثناء التنقل.

الخطوة 2: قراءة الترجمة مرة أخرى

هذه هي الخطوة التي يتخطاها الأشخاص ويجب عليهم &#39؛t. اقرأ الإخراج باللغة الإنجليزية البسيطة وقارنه بالجملة الموجودة في رأسك. إذا كتبت عبارة "قصد واقتباس"؛ كل يوم اثنين الساعة 9 صباحًا واقتباسًا؛ والقراءة تقول &quot؛ في الساعة 09:00 من يوم 1&quot؛ - تهانينا، لقد قمت للتو بإجراء تبديل الأعمدة الكلاسيكي قبل إجراء الإنتاج. رد القراءة هو اختبار الوحدة الخاص بك.

الخطوة 3: التحقق من أوقات التشغيل التالية

تحقق من عمليات الإعدام الخمس القادمة. هل تصل التواريخ إلى حيث تتوقع؟ هل الجولة الأولى الليلة أم غدًا أم الشهر المقبل؟ انتبه إلى الفجوة بين الجولات - في غير محلها */ تتحول الخطوة &quot؛ كل 6 ساعات وquot؛ إلى &quot؛ كل دقيقة من كل 6 ساعات وquot؛ (* */6 * * * مقابل 0 */6 * * *)، ومن الصعب تفويت خمس جولات بفارق دقيقة واحدة بدلاً من ست ساعات. القائمة الفارغة تعني أن الجدول الزمني لا يمكن أن يبدأ أبدًا.

الخطوة 4: حساب المنطقة الزمنية قبل النشر

يخبرك المحلل اللغوي متى بالنسبة للساعة؛ المجدول الخاص بك يقرر من ساعة. قبل النشر، تأكد من المنطقة الزمنية التي يستخدمها النظام المنفذ. إجراءات GitHub: دائمًا UTC، بدون استثناءات. الخوادم: أيًا كان نظام التشغيل الذي تم تعيينه عليه، غالبًا UTC على الصناديق السحابية. Laravel: المنطقة الزمنية لتطبيقك، إلا إذا قمت بالتسلسل ->timezone(). ترجمة وقت التشغيل التالي من خلال محول الطابع الزمني إذا كنت بحاجة إلى رؤيته في منطقتك المحلية أو العميل &#39؛s.


الغوص العميق الفني: كيف تعمل تعبيرات كرون فعليًا

يأتي التنسيق المكون من خمسة حقول من Unix cron، والذي تم توحيده عمليًا بواسطة Paul Vixie&#39؛s cron التنفيذ في أواخر الثمانينيات - وهو التنسيق الموثق في crontab(5) ولا يزال يتم الشحن، في شكل سليل، على معظم أنظمة Linux اليوم. الحقول من اليسار إلى اليمين:

مجال القيم المسموح بها ملاحظات
دقيقة 0 59
ساعة 0 23 الساعة 24، 0 هو منتصف الليل
يوم من الشهر 1 31 احذر أشهرًا بدون الحادي والثلاثين
شهر 1 rechn12 أو JAN artchedEC الأسماء المسموح بها في Vixie cron
يوم من الاسبوع 0 request7 أو SUN arsSAT 0 و 7 كلاهما يوم الأحد

يقبل كل حقل * (أي قيمة)، القوائم (1,15)، النطاقات (1-5)، والخطوات (*/10 أو 20-59/5). هذا &#39؛ القواعد النحوية بأكملها. التعقيد هو &#39؛t في بناء الجملة - it&#39؛s في ثلاث مراوغات سلوكية.

كويرك واحد: يوم الأسبوع صفر. لكل crontab(5)0 و 7 يعنيان يوم الأحد. بعض التطبيقات القديمة أو الأكثر صرامة تقبل فقط 0. كوارتز - برنامج جدولة Java الذي يستخدمه Jenkins ونصف برامج المؤسسات - أرقام الأيام 1 brad7 بدءًا من الأحدإذن الكوارتز &#39؛s 2 هو يوم الاثنين بينما crontab&#39؛s 2 هو الثلاثاء. إذا قمت بترحيل الجداول الزمنية بين الأنظمة، فهذا أمر متقطع. قم دائمًا بالتحليل، ولا تقم بالنسخ أبدًا.

غريب اثنين: يوم من الشهر أو يوم من الأسبوع. هنا &#39؛ هو الشخص الذي لا يعرفه أحد تقريبًا حتى يعضهم. متى كلاهما حقول اليوم من الشهر واليوم من الأسبوع مقيدة (ولا يوجد أي منهما *)، Vixie cron يدير المهمة عندما إما المطابقات - OR، وليس AND. لذا 0 0 13 * 5 لا &#39؛ يعني &quot؛ الجمعة 13.&quot؛ يعني &quot؛ كل 13 من الشهر وكل جمعة.&quot؛ هذا هو السلوك الموثق في crontab(5) وهو غير بديهي للغاية. إذا كنت بحاجة حقًا إلى &quot؛ الجمعة الثالث عشر، &quot؛ أنت بحاجة إلى التحقق من التاريخ من جانب البرنامج النصي أو برنامج جدولة ذو بناء جملة أكثر ثراءً.

Quirk ثلاثة: المناطق الزمنية وDST. ليس لدى كرون حقل منطقة زمنية. يتم تفسير التعبير في التوقيت المحلي للمجدول &#39؛، مهما كان ذلك. نتيجتان ملموستان:

  • تعمل إجراءات GitHub schedule: المشغلات في UTC، نقطة. سير العمل المقرر في 0 9 * * * يتم إطلاق النار في الساعة 9 صباحًا بالتوقيت العالمي - 4 أو 5 صباحًا في نيويورك اعتمادًا على الموسم، لأن التوقيت العالمي المنسق &#39؛ يراقب التوقيت الصيفي ولكن جمهورك المستهدف و#39؛ الساعة تفعل ذلك. &quot؛ 9 صباحًا التقرير اليومي والاقتباس؛ ينجرف بمقدار ساعة مرتين في السنة ما لم تقم بضبط سير العمل أو التعامل معه بالرمز.
  • على الخوادم التي تم تعيينها على منطقة مراقبة التوقيت الصيفي، ليلة واحدة في السنة الساعة 02:00 ظهرًا 03:00 &#39؛ موجودة، وفي ليلة واحدة يحدث ذلك مرتين. المهمة المجدولة في الساعة 02:30 إما يتم تخطيها أو مضاعفة النيران اعتمادًا على التنفيذ. الإصلاح الممل والصحيح: جدولة المهام الهامة خارج الساعة 01:00 إلى الساعة 03:00 محليًا، أو تشغيل الخوادم على UTC. أفعل كلا الأمرين.

تنسيقات موسعة. يستخدم الكوارتز ستة أو سبعة حقول (حقل الثواني الأولى وسنة زائدة اختيارية)، بالإضافة إلى عوامل تشغيل إضافية مثل L (الأخير)، W (أقرب أيام الأسبوع)، و # (اليوم التاسع من أيام الأسبوع من الشهر). تدعم بعض الكرونات حقل الثواني البادئة أيضًا. إذا كان تعبيرك يحتوي على ستة حقول وأنت &#39؛ لست متأكدًا من لهجته، فقم بلصقه في المحلل اللغوي - تعبير مكون من ستة حقول يتم تفسيره على أنه خمسة حقول سينتج مخرجات خاطئة بشكل واضح، وهو في حد ذاته تشخيصي. و @reboot، البطة الغريبة للسلاسل الخاصة، is&#39؛جدول زمني على الإطلاق: يتم تشغيله مرة واحدة عند بدء تشغيل البرنامج الخفي، وهو ما يعني &quot في الأنظمة الحديثة؛ كلما تمت إعادة تشغيل المربع، &quot؛ حقيقة فاجأت العديد من الأشخاص الذين يقومون بترحيل قاعدة البيانات من crontab.

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


حالات الاستخدام الشائعة

تصحيح إدخال جدولة Laravel

يقوم برنامج جدولة Laravel&#39؛s بلف cron بطرق سلسة - ->dailyAt('03:00')، ->weeklyOn(1, '8:00')- لكن فتحة الهروب، ->cron('*/5 * * * 1-5')، هو بناء جملة crontab الخام، وينتهي الأمر بالجداول الزمنية المعقدة هناك. يعمل نظام crontab schedule:run في كل دقيقة، ويقرر Laravel داخليًا ما هو &#39؛s المستحق. عندما يكون الأمر المجدول &#39؛t يطلق النار، فإن خطوتي الأولى هي لصق ->cron() السلسلة في المحلل اللغوي لتأكيدها تعني ما يدعيه التعليق أعلاه. حوالي نصف الوقت، لا &#39؛t. النصف الآخر، الخطأ هو المنطقة الزمنية: تم ضبط التطبيق على UTC بينما افترض المطور التوقيت المحلي. يقوم المحلل اللغوي بحل الحالة الأولى في ثوانٍ ويشير بإصبعه إلى الثانية.

فك تشابك wp-cron على مواقع WordPress

يأتي WordPress مزودًا بـ wp-cron، وهو &#39؛t cron على الإطلاق - it&#39؛s وهو برنامج جدولة زائف يعتمد على زيارات الصفحة، لذا فإن الموقع منخفض الحركة &#39؛s &quot؛ كل ساعة وquot؛ قد يتم تشغيل الوظيفة كل أربع ساعات، ويدفع موقع ذو حركة مرور عالية ضريبة صغيرة على كل طلب. خلال سنوات WP Adminify الخاصة بي، أدى هذا إلى إنشاء تدفق مستمر من &quot؛ المشاركات المجدولة aren&#39؛t النشر والاقتباس؛ التقارير. الإصلاح القياسي هو تعطيل wp-cron (DISABLE_WP_CRON) والإثارة wp-cron.php من خادم crontab حقيقي - وعند هذه النقطة أنت &#39؛ نكتب تعبيرات cron الفعلية، عادةً */5 * * * *، ويكسب المحلل اللغوي استمرار التحقق منها. إذا قمت بتشغيل WordPress على أي نطاق، فإن هذا الترحيل يستحق القيام به هذا الأسبوع، وليس يومًا ما.

التحقق من جداول إجراءات GitHub

تفشل جداول CI بهدوء: البناء الليلي الذي يتوقف عن التشغيل لا &#39؛t صفحة أي شخص. عند كتابة أ schedule: trigger، أقوم بتحليل التعبير، وإلقاء نظرة على أوقات التشغيل التالية، ثم إضافة إزاحة UTC عقليًا. هناك تفصيلان إضافيان خاصان بالإجراءات: تعمل الجداول الزمنية فقط على الفرع الافتراضي، ويمكن تأخير عمليات التشغيل أو إسقاطها خلال فترات التحميل العالي - تقول المستندات الخاصة بـ GitHub&#39؛ ذلك. إذا كان التوقيت الدقيق مهمًا، فإن الإجراءات التي يتم تشغيلها بواسطة cron هي الأداة الخاطئة؛ إذا كان التوقيت التقريبي جيدًا، على الأقل اجعل الوقت التقريبي هو يمين الوقت التقريبي.

تدقيق Crontab الموروثة

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

جدولة Kubernetes CronJobs

يستخدم K8s CronJobs بناء جملة قياسي من خمسة مجالات، ومنذ 1.27، يدعم صيغة صريحة timeZone الحقل - تحسن حقيقي مقارنة بالكرون الكلاسيكي. سير عمل المحلل اللغوي هو نفسه: تحقق من التعبير، وتحقق من عمليات التشغيل التالية، ثم قم بالتأكيد startingDeadlineSeconds و concurrencyPolicy تغطية أوضاع الفشل cron نفسها لا &#39؛t. يمكن أن يكون التعبير مثاليًا وتظل المهمة تتراكم إذا تداخل التشغيل البطيء مع المشغل التالي؛ يحصل المحلل اللغوي على الجدول الزمني الصحيح حتى تتمكن من إنفاق انتباهك على إعدادات التشغيل هذه بدلاً من ذلك.


مقارنة لهجات كرون

فيكسي كرون/كرونتاب إجراءات جيثب كوارتز جدولة لارافيل توقيت systemd
الحقول 5 5 6-7 (ثواني، سنة) 5 (عبر ->cron()) OnCalendar بناء الجملة، وليس كرون
ترقيم اليوم من الأسبوع 0-7 (0 و 7 = الشمس) 0 · 6 (0 = الشمس) 1 reas7 (1 = الشمس) يتبع كرونتاب الأسماء (Mon، Tue)
منطقة زمنية النظام محلي دائما بالتوقيت العالمي قابل للتكوين المنطقة الزمنية للتطبيق أو ->timezone() النظام المحلي أو Timezone=
سلاسل خاصة @daily، @reboot، الخ. غير مدعوم غير مدعوم أساليب بطلاقة بدلا من ذلك OnBootSec=، اختصارات التقويم
دقة الثواني لا لا (دقيقة ~ 5 دقائق عملية) نعم لا (علامة في الدقيقة) نعم
الأفضل ل وظائف الخادم جداول CI/CD النظم البيئية JVM تطبيقات لارافيل خدمات لينكس الحديثة

متى يتم استخدام: crontab لمهام الخادم العادية، ومؤقتات systemd عندما تريد التسجيل ومعالجة التبعية مجانًا على Linux الحديث، وجدولة إطار العمل عندما تكون المهمة موجودة داخل تطبيقك على أي حال، وجداول الإجراءات فقط لمهام CI التي تتحمل التوقيت الغامض. أيًا كان اختيارك، فإن تعبير الحقول الخمسة هو اللغة المشتركة - ولهذا السبب ينتمي المحلل اللغوي الذي يتحدث بها بطلاقة إلى إشاراتك المرجعية بجوار بقية إشاراتك المرجعية مجموعة أدوات مطور الويب.


أسئلة وأجوبة

ما هو محلل تعبير كرون؟

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

ماذا تعني الحقول الخمسة في تعبير كرون؟

من اليسار إلى اليمين: الدقيقة (0-59)، الساعة (0-23)، يوم من الشهر (1-31)، الشهر (1-12)، ويوم من الأسبوع (0-7، حيث يعني كل من 0 و7 يوم الأحد). يقبل كل حقل * لأي قيمة، قوائم الفاصلة، ونطاقات الواصلة، و / قيم الخطوة. لذا 30 2 1 * * يعني 02:30 في اليوم الأول من كل شهر.

لماذا تعمل وظيفتي في الوقت الخطأ؟

السببان الأكثر شيوعًا هما ارتباك المنطقة الزمنية والميدان. يعمل Cron في الجدول الزمني &#39؛ بالتوقيت المحلي - تستخدم GitHub Actions دائمًا UTC، والعديد من الخوادم السحابية تفعل ذلك أيضًا - لذا فإن المهمة المجدولة لـ &quot؛9 صباحًا وquot؛ قد تطلق ساعات من ساعة الحائط الخاصة بك. الكلاسيكي الآخر هو تبديل الحقول، مثل وضع قيمة الساعة في عمود الدقائق. يؤدي تحليل التعبير والتحقق من أوقات التشغيل التالية إلى اكتشاف كليهما.

هل 0 و 7 كلاهما يوم الأحد في كرون؟

في Vixie cron ومعظم تطبيقات Linux، نعم - crontab(5) تسمح صفحة الدليل بكل من 0 و7 ليوم الأحد. لكن هذا ليس عالميًا: أرقام الكوارتز هي الأيام 1-7 بدءًا من يوم الأحد، ويرفض بعض المحللين الصارمين 7. عند نقل التعبيرات بين الأنظمة، أعد التحقق من حقل اليوم من الأسبوع بدلاً من افتراض ترحيل الترقيم.

ماذا يفعل 0 0 13 * 5 في الواقع تفعل؟

ليس واقتباس؛ الجمعة 13.&اقتباس؛ عندما يتم تقييد كل من يوم الشهر ويوم الأسبوع، يعاملهم cron القياسي على أنهم غرفة عمليات: يتم تشغيل الوظيفة في كل 13 من الشهر و في كل يوم جمعة. تم توثيق سلوك Vixie cron وأحد القواعد الأكثر سوء فهم في التنسيق &#39؛. إذا كنت بحاجة إلى AND حقيقي، فأضف التحقق من التاريخ داخل البرنامج النصي نفسه.

كيف يؤثر التوقيت الصيفي على وظائف كرون؟

على الخوادم في المناطق الزمنية لمراقبة التوقيت الصيفي، يمكن للمهام المجدولة بين الساعة 01:00 والساعة 03:00 بالتوقيت المحلي تخطي التشغيل (عندما تقفز الساعات للأمام) أو تشغيلها مرتين (عندما تتراجع)، اعتمادًا على التنفيذ. الأنماط الأكثر أمانًا هي تشغيل الخوادم على UTC أو جدولة المهام المهمة خارج تلك النافذة. لاحظ أن برامج الجدولة المستندة إلى UTC مثل GitHub Actions don&#39؛t تتخطى عمليات التشغيل، لكن التوقيت المحلي يتوافق مع التحولات بمقدار ساعة مرتين في السنة.

يكون @daily نفس 0 0 * * *؟

نعم - @daily (ومرادفه @midnight) يتوسع إلى بالضبط 0 0 * * * في فيكسي كرون. تحذيرين. أولاً، يقبل المحلل اللغوي Toolz.dev فقط التعبيرات ذات الحقول الخمسة، لذا قم باللصق 0 0 * * * بدلاً من @daily الآن. ثانيا، كل @daily يتم تشغيل المهمة في نفس اللحظة، لذلك يحصل الخادم الذي يضم العديد منهم على ارتفاع في حمل منتصف الليل. يؤدي نشر المهام اليومية عبر دقائق وساعات متداخلة إلى تجنب هذا القطيع المدوي الذي يلحق نفسه بنفسه.

هل يقوم المحلل اللغوي Toolz.dev cron بتحميل تعبيراتي؟

رقم ال محلل كرون يتم تشغيله بالكامل في متصفحك - يتم تحليل التعبيرات من جانب العميل ولا يتم إرسالها مطلقًا إلى الخادم أو تسجيلها أو تخزينها. نظرًا لأن crontabs تكشف عن تفاصيل تشغيلية مثل توقيت النسخ الاحتياطي وتشغيل الفواتير، فإن إبقائها خارج خوادم الطرف الثالث يعد افتراضيًا معقولًا، ويمكنك تأكيد السلوك بنفسك في علامة التبويب "الشبكة" في متصفحك &#39؛s.

اقرأها مرة أخرى قبل شحنها

خمسة أسابيع من رسائل البريد الإلكتروني الموجزة التي تصل متأخرة بيوم واحد لا تمثل انقطاعًا دراماتيكيًا. لم يتصل بي أحد. هذا &#39؛ هذا بالضبط ما يجعل أخطاء الجدولة باهظة الثمن: إنهم يفعلون &#39؛ يعلنون عن أنفسهم، إنهم يفعلون الشيء الخطأ بهدوء حتى يذكره العميل بشكل عابر. العادة التي أصلحتها لي هي &#39؛ الانضباط أو ذاكرة أفضل للطلب الميداني - it&#39؛ ق إعادة القراءة لمدة ثلاثين ثانية. لصق التعبير، اقرأ الجملة الإنجليزية، وانظر إلى خمسة تواريخ محددة، ثم قم بالنشر.

احتفظ ب محلل كرون بجوار الأدوات التي ستصل إليها &#39؛ في نفس جلسة تصحيح الأخطاء: محول الطابع الزمني عندما يحتاج وقت التشغيل التالي إلى التنقل بين المناطق (I&#39؛ لقد كتبت مصائد الطابع الزمني لنظام Unix تلك اللدغة الأصعب)، حاسبة فرق التاريخ لفترات التحقق من الصحة العقلية، و أداة فرق النص عندما &#39؛ يتم مقارنة crontab القديم بآخر جديد أثناء الترحيل. ال دليل أدوات الترميز يمكنك تصفح كيفية تناسب المجموعة معًا، وكل شيء يعمل من جانب العميل - وهو الوضع الافتراضي الوحيد المعقول بالنسبة للملف الذي يوثق بالضبط عند تشغيل النسخ الاحتياطية والفواتير.

Frequently Asked Questions

A cron expression parser is a tool that reads crontab syntax — like */15 9-17 * * 1-5 — and translates it into a plain-English schedule description, typically alongside a preview of the next execution times. It lets you verify what a schedule actually does before deploying it, instead of discovering a misread field when a job fires at the wrong time in production.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!