محلّل تعبير Cron

يحلّل تعبير cron قياسيًا من خمسة حقول، ويعرض كل حقل على حدة، ويحسب أوقات التشغيل التالية. تتم جميع الحسابات في متصفحك.

آخر تحديث:

تعبير Cron
الترتيب: الدقيقة الساعة يوم-الشهر الشهر يوم-الأسبوع. مثال: 0 9 * * 1-5.
تعابير جاهزة

النتائج

تفصيل الحقول

الدقيقة
0
الساعة
9
يوم الشهر
*
الشهر
*
يوم الأسبوع
1-5

التشغيلات الخمس التالية

    تُعرَض الأوقات حسب المنطقة الزمنية المحلية لمتصفحك.

    متى يفيدك هذا المحلّل

    عند قراءة crontab ورثته عن غيرك

    سطر من خمسة حقول هو نيّة مضغوطة كتبها شخص غادر المشروع غالبًا. تفكيك السطر حقلًا حقلًا يحوّل سؤال «متى تعمل هذه المهمة فعلًا؟» من تخمين إلى جواب.

    قبل جدولة مهمة شهرية أو أسبوعية

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

    عند التحقق من جدول Kubernetes CronJob

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

    مثال محسوب: أول اثنين من الشهر، أم خمس مرات في الشهر؟

    أراد أحدهم تقريرًا في التاسعة من صباح أول اثنين في كل شهر، فكتب: 0 9 1 * 1. يبدو منطقيًا؛ لنفكّكه.

    1. الحقول: الدقيقة 0، والساعة 9، ويوم الشهر 1، والشهر مفتوح على الشهور كلها، ويوم الأسبوع 1 (الاثنين).
    2. حين يُقيَّد حقلا اليوم معًا يجمعهما cron القياسي بمنطق أو، لا بمنطق و.
    3. النتيجة: تعمل المهمة في اليوم الأول من الشهر أيًّا كان يومه، وفي كل اثنين أيضًا.
    4. خذ يناير 2026: يعمل الخميس 1 يناير، ثم الاثنين 5 و12 و19 و26.
    5. المجموع خمس مرات في الشهر بدل مرة واحدة؛ التقرير «الشهري» صار شبه أسبوعي.

    لا يستطيع cron القياسي التعبير عن «أول اثنين من الشهر» بحقوله الخمسة. الحل العملي: قيّد يوم الأسبوع وحده (0 9 * * 1) ثم تحقق داخل السكربت أن رقم اليوم لا يتجاوز 7 قبل تنفيذ العمل. أما صيغ Quartz مثل # وL فليست جزءًا من الصيغة القياسية، ولن تعمل في crontab عادي ولا في Kubernetes.

    أربعة أخطاء متكررة

    افتراض تعويض التشغيلات الفائتة

    إذا كان الخادم مطفأً وقت الجدولة فلن يعوّض cron الكلاسيكي ما فات؛ ذلك عمل anacron. أما Kubernetes فيسير عكس ما يظنّه كثيرون: من دون startingDeadlineSeconds لا مهلة أصلًا، فتُشغَّل المهمة الفائتة متى عاد المتحكّم؛ وضبط القيمة هو ما يجعله يتخطّى ما تأخّر عن النافذة. على أنّ تجاوز مئة تشغيل فائت يوقف الجدولة كلها.

    نقل تعبير Quartz كما هو

    تبدأ تعابير Quartz بحقل للثواني، فتصير ستة حقول لا خمسة. لصقها في crontab يجعل الثواني دقائق ويزيح كل حقل عن موضعه، والتعبير الناتج صالح شكلًا فيمرّ دون تحذير.

    تجاهل تداخل التشغيلات

    مهمة تعمل كل 6 ساعات عند 00 و06 و12 و18 قد تستغرق أحيانًا أكثر من فاصلها فتتراكم النسخ. استخدم قفلًا مثل flock على الخوادم، أو concurrencyPolicy: Forbid في Kubernetes.

    الاعتماد على الذاكرة في ترتيب الحقول

    الدقيقة أولًا ثم الساعة. من أراد الثامنة والربع صباحًا كتب 15 8؛ فإن قلبهما إلى 8 15 انتقلت المهمة إلى الثالثة وثماني دقائق عصرًا. التعبيران صالحان، ولا ينبّهك أحد قبل قراءة السجلات.

    أدوات تُستعمل إلى جانبها

    • محوّل Epoch / Unix Timestamp حوّل طوابع Unix epoch الزمنية إلى تواريخ مقروءة والعكس. يُكتشَف وضع الثواني والميلي ثانية تلقائيًا.
    • حاسبة ميزانية موارد Kubernetes احسب عدد العُقد التي تحتاجها وكفاءة التعبئة والتكلفة الشهرية التقديرية بناءً على طلبات الحاوية وحجم العُقدة.
    • مولّد Hash (SHA) احسب ملخصات SHA-1 وSHA-256 وSHA-384 وSHA-512 للنص فورًا. عبر Web Crypto API، في المتصفح.
    • مُرمّز/مُفكّك HTML / Entity رمّز النص إلى كيانات HTML أو فُكّ ترميزه. اهرب المحارف الخاصة لمنع XSS؛ في المتصفح، دون تسجيل.
    • عارض HTML الصق شيفرة HTML وعايِنها حيًّا فورًا. في إطار معزول وآمن (sandbox)؛ والـ scripts معطّلة للأمان.

    الأسئلة الشائعة

    ما هي الحقول الخمسة في تعبير cron؟

    يتكوّن تعبير cron القياسي من خمسة حقول من اليسار إلى اليمين: الدقيقة (0-59)، الساعة (0-23)، يوم الشهر (1-31)، الشهر (1-12)، ويوم الأسبوع (0-6، 0 = الأحد). يمكن لكل حقل أن يحتوي نجمة (*) أو قيمة واحدة أو نطاقًا (1-5) أو قائمة (1,3,5) أو خطوة (*/15).

    ما صيغة cron التي يستخدمها Kubernetes CronJob؟

    يستخدم Kubernetes CronJob صيغة Unix cron القياسية من 5 حقول في حقل schedule. لا يوجد حقل للثواني. المنطقة الزمنية افتراضيًا هي منطقة kube-controller-manager، ويمكن تحديد منطقة IANA عبر الحقل spec.timeZone.

    ماذا يحدث عند تقييد يوم الشهر ويوم الأسبوع معًا؟

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

    ماذا يعني */15؟

    الشرطة المائلة قيمة خطوة. في حقل الدقيقة، */15 تعني "ابدأ من 0، كل 15 دقيقة" — أي 0 و15 و30 و45. و*/5 تعني كل خمس وحدات، و10-30/5 تتطابق بين 10 و30 بخطوة خمسة.

    لماذا تظهر أوقات التشغيل التالية بالتوقيت المحلي؟

    تحسب هذه الأداة التشغيلات التالية حسب المنطقة الزمنية المحلية لمتصفحك لسهولة القراءة. أما الوقت الفعلي لتشغيل CronJob في الإنتاج فيعتمد على منطقة العنقود أو spec.timeZone — لا تخلط بينهما.