مولّد تعبيرات Cron

0-59

0-23

1-31

1-12

0-7 (0,7=الأحد)

التالي

بناء جملة cron مقتضب ومن السهل أن تخطئ فيه: 0 */6 * * * يعمل كل ست ساعات، بينما */6 0 * * * يُنفَّذ عشر مرات فقط خلال الساعة الأولى بعد منتصف الليل. يتيح لك هذا المولد اختيار جدول زمني بشكل مرئي (كل 15 دقيقة، خلال أيام الأسبوع في الساعة 9 صباحًا، في اليوم الأول من كل شهر) ويُخرج التعبير الدقيق مع وصف بلغة واضحة لما يعنيه.

كيفية بناء تعبير كرون

  1. 1

    اختر إعدادًا جاهزًا أو اكتب الحقول

    كل دقيقة، وكل ساعة، وكل يوم عند منتصف الليل، وكل أسبوع يوم الأحد، واليوم الأول من كل شهر بنقرة واحدة. ولأي جدول آخر، اكتب القيم مباشرة في الحقول الخمسة.

  2. 2

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

    دقائق محددة، ساعات، أيام من الشهر، أشهر، أيام من الأسبوع. النطاقات (9-17)، والقوائم (1،15) والخطوات (*/6) كلها مدعومة.

  3. 3

    اقرأ التعبير

    يُخرج المولّد دائمًا صيغة cron القياسية ذات الحقول الخمسة، مع وصف واضح للجدول الزمني.

  4. 4

    تحقق من اللهجة

    تختلف اللهجات (Quartz وAWS EventBridge وKubernetes). تأكد من أن التعبير يطابق ما يتوقعه المجدول الذي تستخدمه.

الحقول الخمسة

*  *  *  *  *
│  │  │  │  │
│  │  │  │  └── يوم الأسبوع (0-6، الأحد=0، أو SUN-SAT)
│  │  │  └───── الشهر (1-12، أو JAN-DEC)
│  │  └──────── يوم الشهر (1-31)
│  └─────────── الساعة (0-23)
└────────────── الدقيقة (0-59)

يقبل كل حقل:

  • رقم محدد: 5
  • القائمة: 1,15,30
  • النطاق: 9-17
  • خطوة: */10 (كل 10) أو 0-30/5 (كل 5 من 0 إلى 30)
  • حرف البدل: * (كل قيمة)

التعبيرات الشائعة

الجدول الزمني تعبير كرون
كل دقيقة * * * * *
كل 15 دقيقة */15 * * * *
كل ساعة على الساعة 0 * * * *
كل 6 ساعات 0 */6 * * *
كل يوم الساعة 2:30 صباحًا 30 2 * * *
كل أيام الأسبوع الساعة 9 صباحًا 0 9 * * 1-5
كل يوم اثنين الساعة 8 صباحًا 0 8 * * 1
اليوم الأول من كل شهر، الساعة 3 صباحًا 0 3 1 * *
كل 15 دقيقة، 9-17 أيام الأسبوع */15 9-17 * * 1-5
ظهر يومي 1 و 15 0 12 1,15 * *
كل يوم أحد عند منتصف الليل 0 0 * * 0

يوم من الشهر + يوم من الأسبوع مسكتك

في cron القياسي، إذا تم تحديد كلاهما يوم من الشهر ويوم من الأسبوع (وليس *)، فسيتم تشغيل المهمة عندما يتطابق أي منهما (OR، وليس AND). يتم تشغيل 0 0 1 * MON في الأول من كل شهر و في كل يوم اثنين، وليس فقط عندما يكون الأول هو يوم الاثنين.

تتبع Vixie cron ومعظم توزيعات Linux قاعدة OR هذه. الكوارتز (جافا) والبعض الآخر يستخدم AND. عندما تكون في شك، اختبر التعبير بتشغيل تجريبي (dry run) أو مهمة اختبار في المجدول الذي تستخدمه.

اختلافات اللهجة

  • الكرون القياسي (Linux): 5 حقول، أيام الأسبوع 0-6 (الأحد = 0 أو 7).
  • الكوارتز (الربيع، تطبيقات Java): 6-7 حقول، مع الثواني كحقل 1 وسنة اختيارية. يوم الأسبوع 1-7 (الأحد = 1).
  • AWS EventBridge cron: 6 حقول، مع السنة. يجب أن يكون يوم الأسبوع ويوم الشهر متنافيين (يجب أن يكون أحدهما ?).
  • GitHub Actions: 5 حقول قياسية، الحد الأدنى للفاصل الزمني 5 دقائق، UTC فقط.
  • Kubernetes CronJob: معيار 5 حقول، UTC بشكل افتراضي.

تأكد دائمًا من اللهجة التي يستخدمها المجدول الخاص بك.

المناطق الزمنية

يعمل cron الكلاسيكي في المنطقة الزمنية المحلية للخادم. وهذا أمر صعب للغاية فيما يتعلق بانتقالات التوقيت الصيفي: قد يتم تشغيل مهمة الساعة 2:30 صباحًا مرتين أو لا يتم تشغيلها على الإطلاق في أيام التبديل. تتيح لك أدوات الجدولة الحديثة (مؤقتات systemd، وKubernetes، وEventBridge) تحديد المنطقة الزمنية بشكل صريح - استخدم UTC ما لم يكن لديك سبب وجيه لعدم القيام بذلك.

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

كل 5 وحدات من الحقل، بدءًا من 0. في حقل الدقائق، يتم إطلاق */5 عند الدقائق 0، 5، 10، 15، …، 55. وهو اختصار لـ 0,5,10,15,20,25,30,35,40,45,50,55.

لا يستطيع Cron التعبير عن فترات زمنية عشوائية لا تنقسم بالتساوي إلى 60 دقيقة أو 24 ساعة. لمدة 90 دقيقة، قم بإدراج مواعيد التشغيل المحددة: 0 0,9 * * * مدمجًا مع خطوط إضافية، أو انتقل إلى برنامج جدولة يدعم الفواصل الزمنية التعسفية (مؤقتات النظام، anacron).

منتصف الليل. ترتيب الحقل هو دقيقة/ساعة، لذا فإن 0 0 يعني “الدقيقة 0 من الساعة 0”. الظهر سيكون 0 12 * * *.

يتخطاها cron القياسي، لا يتم إعادة المحاولة بعد عمليات التشغيل الفائتة. أما Anacron فيلتقط المهام اليومية والأسبوعية والشهرية الفائتة عند الإقلاع التالي. ويحتوي Kubernetes CronJobs على startingDeadlineSeconds وconcurrencyPolicy للتعامل مع النوافذ الفائتة بشكل صريح.

أدوات ذات صلة