الأدوات
الأدلة

منشئ تعبيرات Cron

التحويل

يبني ويتحقق ويشرح تعبيرات cron. يحسب وقت التشغيل التالي (UTC).

100% من جهة العميل بدون خادم خلفي
قوالب جاهزة
الإخراج
التشغيل التالي (UTC)
نسخ
في هذه الصفحة

ما هو تعبير cron؟#

تعبير cron هو جدولة مختصرة تُكتب على هيئة خمسة حقول مفصولة بمسافات: الدقيقة الساعة يوم-الشهر الشهر يوم-الأسبوع. سطر مثل 0 9 * * 1-5 يُقرأ من اليسار إلى اليمين: «عند الدقيقة 0، الساعة 9، كل يوم-شهر، كل شهر، في الأيام من 1 إلى 5 (الإثنين–الجمعة)» — أي الساعة 09:00 في أيام العمل. كل * تعني «كل قيمة في هذا الحقل»، فكلما ثبّتت حقولًا أكثر زاد الجدول تحديدًا، وكلما تركت منها * أكثر زاد إطلاقه.

تعبير cron هو لغة الجدولة الأصلية في crontab الخاص بـ Linux وGitHub Actions وCronJob في Kubernetes ومعظم أنظمة CI وعدد لا يحصى من مجدولات المهام. كتابته صحيحةً هي نصف المعركة؛ والنصف الآخر هو غموض يوم-الشهر/يوم-الأسبوع (انظر الأسئلة الشائعة أدناه) الذي يُوقع حتى المهندسين المتمرّسين. تحلّل هذه الصفحة حقولك الخمسة أثناء الكتابة، وتُبرز الحقل الذي يحوي خطأ بناء جملة أو نطاق تحديدًا، وتحسب التشغيل التالي لتتأكّد أنّ الجدولة تُطلق فعلًا حينما تظنّ.

كيفية الاستخدام#

  1. حرّر مربع التعبير في الأعلى. يبدأ بالقيمة * * * * * (كل دقيقة).
  2. أسفله خمس قوائم منسدلة — واحدة لكل حقل (الدقيقة، الساعة، يوم الشهر، الشهر، يوم الأسبوع). يقدّم كل منها الأجزاء الشائعة لذلك الحقل (* و*/5 و0 و1-5 و0,6…)؛ واختيار أحدها يُسقطه في الموضع المقابل من التعبير، وهو أمر عملي حين لا تتذكّر هل */15 يقع في خانة الدقائق.
  3. يملأ صفّ القوالب الجاهزة جداول بداية كاملة بنقرة واحدة: كل دقيقة، كل ساعة، يوميًا، أسبوعيًا، شهريًا، سنويًا، أيام العمل.
  4. تعرض لوحة المخرجات التشغيل التالي (UTC) (أول لحظة عند اللحظة الحالية أو بعدها تتطابق) وسطر حالة إمّا أن يؤكّد التحليل الصحيح أو يسمّي الحقل المُخطئ. اضغط now() لإعادة الحساب وفق اللحظة الحالية.

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

  • قواعد الخمسة حقول الكاملة. يدعم * وقوائم الفواصل (0,15,30,45) والنطاقات (1-5) والخطوات (*/15 و9-17/2) وأسماء الأشهر/الأيام (JAN-DEC وSUN-SAT غير حساسة لحالة الأحرف). تُقبل القيمة 7 للأحد وتُطبَّع إلى 0.
  • منطق صحيح ليوم-الشهر/يوم-الأسبوع. يطبّق قاعدة Vixie-cron القياسية: حين تكون الحقولان كلتاهما مقيّدة، تُطلق المهمة إذا طابقت إحداهما (أو منطقية)؛ وحين تُقيَّد واحدة فقط يجب أن تطابقا معًا (و). كثيرًا من الحاسبات الساذجة تخطئ في هذا.
  • أخطاء دقيقة بالحقل. يُبلَّغ عن نطاق سيّئ أو حرف شارد مع تحديد الحقل المعني بالضبط (minute أوhour…)، لا رسالة عامة «تعبير غير صالح».
  • التشغيل التالي مبنيًا على UTC. يُحسب المحفّز التالي على مكوّنات اللحظة في UTC، فتكون النتيجة حتمية بغضّ النظر عن مكان تحميل الصفحة، ثم تُعرض تاريخًا اعتياديًا يمكنك نسخه.
  • حارس عدم الوصول. يُكشَف التعبير الذي لا يمكن أن يطابق أبدًا (مثل يوم-شهر لا يحويه أي شهر) بدلًا من الدوران إلى الأبد.

مثال عملي#

اكتب 0 9 * * 1-5 لاجتماع يوم عمل. حقلاً بحقل: الدقيقة 0، الساعة 9، يوم الشهر *، الشهر *، يوم الأسبوع 1-5. كلتا الحقلَين التاريخ (*) ويوم الأسبوع (1-5) مقيّدة، لكن يوم الأسبوع وحده هو المقيّد فعليًا — فالتاريخ رمز بدل — فيُطبَّق مسار «و»: الإطلاق عند 09:00 في أيام الإثنين إلى الجمعة. يعرض التشغيل التالي لحظة 09:00 UTC القادمة في يوم عمل.

قارن ذلك بـ 0 0 1 * 1 — «الدقيقة 0، الساعة 0، الأول من الشهر، كل شهر، الإثنين». هنا كلتا الحقلَين يوم-الشهر (1) ويوم-الأنسب (1) مقيّدة، فيأخذ cron مسار «أو»: تُطلق المهمة في الأول من كل شهر وفي كل إثنين — لا «الإثنين الذي يصادف الأول»، وهو التفسير الخاطئ شبه العام. تجعل لوحة التشغيل التالي الفرق مرئيًا: ستراها تنتقل إلى أقرب إثنين حتى حين لا يكون ذلك الإثنين هو الأول.

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

لماذا تُطلق مهمتي في أيام لم أتوقّعها؟#

السبب دائمًا تقريبًا هو تفاعل يوم-الشهر/يوم-الأسبوع. يعامَلان في cron القياسي على أنهما «أو» حين تكون كلتاهما مثبّتتين: 0 0 1 * 1 تعني «الأول، أو أي إثنين»، لا «الأول فقط إذا كان إثنينًا». إن أردت مهمة تعمل فقط حين يكون الأول هو إثنينًا، فلن يستطيع cron نفسه التعبير عن ذلك — تجدول الأول وتضيف فحص يوم الأسبوع داخل السكربت.

ماذا يعني */5 و9-17/2؟#

*/5 في حقل الدقائق تعني «بدءًا من 0، كل قيمة خامسة» ← 0, 5, 10, 15, …, 55. و9-17/2 تعني «ضمن النطاق من 9 إلى 17، كل قيمة ثانية» ← 9, 11, 13, 15, 17 — مفيدة لـ«كل ساعتين خلال ساعات العمل». مُقسِّم الخطوة بعد / يُطبَّق على أي نطاق أو رمز بدل يسبقه.

هل 0 أم 7 هو الأحد؟#

كلاهما. يقبل حقل يوم الأسبوع 0 و7 للأحد (كان cron تاريخيًا يستخدم 0؛ وأضافت بعض الأنظمة 7). تأخذ هذه الأداة بأيهما وتُطبِّع 7 إلى 0. والأسماء تعمل أيضًا: SUN وMon وfri كلها غير حساسة لحالة الأحرف.

التعبير يُحلَّل لكن التشغيل التالي يبدو بعيدًا. هل هو خطأ؟#

على الأرجح لا — فعادةً يعني أنّ الجدولة فعلًا لا تستطيع الإطلاق قريبًا. التعبير 0 0 29 2 * (29 فبراير) صالح لكنه يطابق السنوات الكبيسة فقط، فقد يكون التشغيل التالي بعد سنوات. تحدّ الأداة بحثها بنحو ثماني سنوات تقريبًا؛ والتعبير الذي لا يطابق داخل تلك النافذة يُبلَّغ عنه بأنه غير قابل للوصول بدلًا من تعليق الصفحة.