DevToolPal
ع

تعبير Cron

كل 15 دقيقة خلال ساعات العمل

يعمل كل 15 دقيقة بين 09:00 و17:45 في أيام العمل.

*/15 9-17 * * 1-5 افتح في محلّل تعبيرات Cron

شرح كل حقل

الحقل القيمة يطابق
الدقيقة */15 0, 15, 30, 45
الساعة 9-17 9, 10, 11, 12, …, 17
يوم الشهر * كل القيم
الشهر * كل القيم
يوم الأسبوع 1-5 الاثنين والثلاثاء والأربعاء والخميس والجمعة

أوقات التشغيل القادمة

مثال: أول 6 مرات تشغيل بعد 1 يناير 2026 (UTC).

  1. الخميس، 1 يناير 2026، 09:00
  2. الخميس، 1 يناير 2026، 09:15
  3. الخميس، 1 يناير 2026، 09:30
  4. الخميس، 1 يناير 2026، 09:45
  5. الخميس، 1 يناير 2026، 10:00
  6. الخميس، 1 يناير 2026، 10:15

نسخ جاهزة للاستخدام

crontab
*/15 9-17 * * 1-5 /path/to/command

أضف السطر باستخدام crontab -e. يعمل وفق المنطقة الزمنية للخادم ما لم يُضبط CRON_TZ أو TZ.

Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
  name: every-15-minutes-during-business-hours
spec:
  schedule: "*/15 9-17 * * 1-5"
  timeZone: "Etc/UTC"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: job
              image: busybox:1.36
              command: ["/bin/sh", "-c", "date; echo run"]

اضبط spec.timeZone (‏Kubernetes 1.27 فأحدث)؛ وبدونه يتبع الجدول المنطقة الزمنية لـ controller manager، وهي UTC غالبًا.

GitHub Actions
on:
  schedule:
    - cron: '*/15 9-17 * * 1-5'
  workflow_dispatch:

يستخدم GitHub Actions توقيت UTC دائمًا، ويقبل فواصل لا تقل عن 5 دقائق، وقد يتأخر بدء التشغيل المجدول عند الضغط.

Quartz
0 */15 9-17 ? * MON-FRI

يضع Quartz الثواني أولًا ويتطلب ? في يوم الشهر أو يوم الأسبوع. تُرقَّم الأيام من 1 إلى 7 بدءًا من الأحد، لذا فالأسماء أكثر أمانًا.

Spring
@Scheduled(cron = "0 */15 9-17 * * MON-FRI")

يستخدم Spring ‏@Scheduled(cron = …) ستة حقول: الثواني ثم الحقول الخمسة المعتادة.

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

› كيف أتوقف عند 17:00 تمامًا؟

لا يستطيع سطر cron واحد الانتهاء في منتصف ساعة. استخدم */15 9-16 * * 1-5 وأضف سطرًا ثانيًا 0 17 * * 1-5.

› بأي منطقة زمنية يعمل */15 9-17 * * 1-5؟

يستخدم cron المنطقة الزمنية للجهاز أو الخدمة التي تشغّله. في لينكس هي منطقة النظام ما لم يُضبط CRON_TZ أو TZ؛ وتقبل CronJob في Kubernetes الحقل spec.timeZone؛ ويستخدم GitHub Actions توقيت UTC دائمًا.

› كيف أتحقق من هذا الجدول قبل النشر؟

افتح */15 9-17 * * 1-5 في محلّل تعبيرات Cron على هذا الموقع. يشرح كل حقل ويعرض أوقات التشغيل القادمة بتوقيتك المحلي أو بتوقيت UTC، داخل المتصفح مباشرة.