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

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

كل 15 دقيقة، من الساعة 08:00 حتى 17:59، من الأحد إلى الخميس

*/15
الدقيقة (0-59)
8-17
الساعة (0-23)
*
يوم الشهر (1-31)
*
الشهر (1-12)
0-4
يوم الأسبوع (0-6، الأحد 0)

ابنِ تعبيرًا

0 9 * * *

الأوقات في cron بتوقيت الخادم الذي يشغّله، وكثير من الخوادم على UTC. في السعودية أضف 3 ساعات لتعرف التوقيت المحلي، وفي مصر 2 أو 3 حسب التوقيت الصيفي.

طريقة الاستخدام

  1. اختر التكرار من الخيارات الجاهزة (كل دقيقة، كل ساعة، يوميًا، أسبوعيًا، شهريًا) وعدّل الوقت والأيام.
  2. أو الصق تعبيرًا من ملف crontab لتقرأ شرحه بالعربي.
  3. راجع المواعيد القادمة للتأكد، ثم انسخ التعبير إلى crontab أو GitHub Actions أو خدمة الجدولة عندك.

عن الأداة

تعبير Cron خمسة حقول تفصلها مسافات، بهذا الترتيب: الدقيقة (0–59)، الساعة (0–23)، يوم الشهر (1–31)، الشهر (1–12)، يوم الأسبوع (0–6 حيث الأحد 0، وبعض الأنظمة تقبل 7 للأحد أيضًا). النجمة تعني «كل قيمة»، والشرطة نطاقًا مثل ⁦8-17⁩، والفاصلة قائمة مثل ⁦1,15⁩، والشرطة المائلة خطوة مثل ⁦*/5⁩ (كل خمس دقائق). فالتعبير ⁦0 9 * * 1-5⁩ يعني التاسعة صباحًا كل يوم من الاثنين إلى الجمعة.

قاعدة تخدع كثيرين: حين يُحدَّد يوم الشهر ويوم الأسبوع معًا (كلاهما ليس نجمة) يعمل التعبير إذا تحقق أحدهما لا كلاهما، فـ ⁦0 0 13 * 5⁩ يعمل يوم 13 من كل شهر وكل جمعة أيضًا، لا في الجمعة الموافقة 13 فقط. وأسبوع العمل في الخليج ومصر من الأحد إلى الخميس، أي ⁦0-4⁩، لا ⁦1-5⁩ كما في الأمثلة الأجنبية.

المواعيد القادمة تُحسب بتوقيت جهازك، أما الخادم فيعمل بتوقيته هو، وأغلب الخوادم السحابية على UTC؛ فالتاسعة صباحًا بتوقيت الرياض هي ⁦0 6 * * *⁩ على خادم UTC. الأداة تدعم التعبير القياسي بخمسة حقول كما في crontab على لينكس وGitHub Actions وأغلب خدمات الجدولة؛ الصيغ الموسّعة بحقل للثواني أو للسنة (Quartz، Spring) لها قواعد أخرى.

أسئلة شائعة

كيف أكتب «كل 5 دقائق» و«كل ساعة» و«كل يوم منتصف الليل»؟

⁦*/5 * * * *⁩ كل خمس دقائق، و⁦0 * * * *⁩ على رأس كل ساعة، و⁦0 0 * * *⁩ منتصف كل ليلة. الفرق بين ⁦* * * * *⁩ و⁦0 * * * *⁩ أن الأول يعمل كل دقيقة والثاني ستين مرة أقل.

لماذا لم تعمل مهمتي في الوقت الذي كتبته؟

غالبًا بسبب المنطقة الزمنية: الخادم على UTC وأنت تحسب بتوقيتك المحلي، والفرق ساعتان في القاهرة وثلاث في الرياض. راجع توقيت الخادم بـ date، أو اضبط TZ في crontab إن كان نظامك يدعمه.

هل يمكن جدولة مهمة كل 30 ثانية بـ Cron؟

لا في Cron القياسي؛ أصغر وحدة هي الدقيقة. الحل الشائع مهمتان تعملان كل دقيقة إحداهما تنتظر 30 ثانية (sleep 30) قبل التنفيذ، أو استخدام خدمة جدولة تدعم الثواني.