انتقل إلى المحتوى
مولد تعبيرات الكرون

صيغة كرون تاب

مرجع صيغة الكرون

صيغة تعبيرات الكرون في صفحة واحدة: الحقول الخمسة وقيمها، والرموز الأربعة، والاختصارات مثل ‎@daily، والقواعد التي يقع فيها كثيرون. وكل مثال مرتبط بصفحة تشرحه بالتفصيل.

صيغة كرون تاب باختصار

تعبير الكرون خمسة حقول تفصل بينها مسافات. وفي ملف كرون تاب يأتي الأمر بعدها على السطر نفسه:

MIN  HOUR  DOM  MON  DOW   COMMAND
30   2     *    *    1-5   /usr/local/bin/backup.sh
│    │     │    │    │
│    │     │    │    └──── يوم الأسبوع: من الإثنين إلى الجمعة
│    │     │    └───────── الشهر: كل الأشهر
│    │     └────────────── يوم الشهر: كل الأيام
│    └──────────────────── الساعة: 2 صباحًا
└───────────────────────── الدقيقة: 30

ويُقرأ هكذا: «الساعة 2:30 صباحًا، من الإثنين إلى الجمعة».

#الحقلالقيم المسموحةملاحظات
1الدقيقة0–59—
2الساعة0–23بنظام 24 ساعة، ومنتصف الليل هو 0 وليس 24
3يوم الشهر1–31الأيام غير الموجودة في الشهر يتم تخطيها
4الشهر1–12 أو JAN–DECالأسماء لا تتأثر بحالة الأحرف
5يوم الأسبوع0–7 أو SUN–SAT0 و7 كلاهما يعني الأحد

الأسماء هي أول ثلاثة أحرف من اسم الشهر أو اليوم بالإنجليزية. تعمل الأرقام في كل إصدارات الكرون، وبعض الوثائق القديمة تذكر أن النطاقات والقوائم بالأسماء (مثل MON-FRI) غير مسموحة، لذلك فإن 1-5 هو الخيار الأضمن.

رموز الكرون

الرمزالمعنىمثاليعمل
*كل القيم* * * * *كل دقيقة
,قائمة قيم0 9,17 * * *الساعة 9 صباحًا و5 مساءً
-نطاق يشمل طرفيه0 9-17 * * *كل ساعة من 9 صباحًا إلى 5 مساءً
/خطوة تكرار*/15 * * * *كل 15 دقيقة
a-b/nخطوة داخل نطاق0 8-18/2 * * *كل ساعتين من 8 صباحًا إلى 6 مساءً

ويمكن الجمع بين الرموز: 0,30 9-17 * * 1-5 يعمل كل نصف ساعة من 9 صباحًا حتى 5:30 مساءً في أيام العمل.

خطوة التكرار تبدأ من جديد مع كل نطاق

*/7 في حقل الدقائق يعمل عند 0 و7 و14 … 56 ثم عند 0 مرة أخرى، لذلك يكون الفاصل عند نهاية الساعة 4 دقائق لا 7. وللحصول على إيقاع منتظم استخدم خطوة تقبل القسمة على 60 للدقائق (2، 3، 4، 5، 6، 10، 12، 15، 20، 30) أو على 24 للساعات (2، 3، 4، 6، 8، 12).

وللسبب نفسه لا يعني */90 «كل 90 دقيقة»، فحسب الإصدار إما أن يُرفض أو يُعامل بصمت على أنه الدقيقة 0 فقط. ولتشغيل مهمة كل 90 دقيقة استخدم سطرين:

0 0-21/3 * * *    /usr/local/bin/job.sh
30 1-22/3 * * *   /usr/local/bin/job.sh

الاختصارات الخاصة

الاختصاريساوييعمل
@yearly @annually0 0 1 1 *مرة في السنة، في 1 يناير عند منتصف الليل
@monthly0 0 1 * *في اليوم الأول من كل شهر عند منتصف الليل
@weekly0 0 * * 0كل يوم أحد عند منتصف الليل
@daily @midnight0 0 * * *كل يوم عند منتصف الليل
@hourly0 * * * *في بداية كل ساعة
@reboot—مرة واحدة عند بدء cron بعد الإقلاع

يقبل كرون لينكس (Vixie cron وcronie) كل هذه الاختصارات، ويقبلها Kubernetes كلها ما عدا @reboot. أما المجدولات الأخرى فقد لا تقبلها، فتحقّق قبل الاعتماد عليها.

يوم الشهر ويوم الأسبوع: قاعدة «أو»

إذا كان حقلا اليوم مقيّدين معًا، يشغّل كرون لينكس المهمة عند تطابق أيٍّ منهما. فالتعبير 0 9 1 * 1 يعمل الساعة 9 صباحًا في اليوم الأول من كل شهر وأيضًا كل يوم إثنين، وليس فقط أيام الإثنين التي توافق اليوم الأول. وإذا كان أحد الحقلين * فالحقل الآخر وحده هو المعتمد.

وللحصول على منطق «و»، جدول الشرط الأوسع واختبر الشرط الآخر داخل الأمر. فأول إثنين في الشهر مثلًا هو يوم الإثنين الذي يقع بين اليوم 1 واليوم 7:

0 9 * * 1  [ "$(date +\%d)" -le 7 ] && /usr/local/bin/monthly-report.sh

أما Quartz وAWS وSalesforce فتتجنب المشكلة بطريقة أخرى: إذ تشترط وضع ? في أحد حقلي اليوم.

قيم تبدو صحيحة لكنها ليست كذلك

صيغة الكرون في المنصات الأخرى

تستعير مجدولات كثيرة صيغة الكرون وتضيف إليها. ومعاني الرموز الإضافية: ? بلا قيمة محددة، وL الأخير، وW أقرب يوم عمل، و# ترتيب اليوم في الشهر، وH قيمة يشتقها Jenkins من اسم المهمة.

المنصةعدد الحقولرموز إضافية
كرون لينكس (crontab)5—
Quartz6–7? L W #
Spring6? L W #
AWS EventBridge6? L W #
Jenkins5H
Salesforce6–7? L W #
Hangfire5–6? L W #
Airflow5? L W #
node-cron5–6? L W #

أمثلة على صيغة الكرون

تصفّح كل أمثلة تعبيرات الكرون، أو أنشئ تعبيرك باستخدام مولد تعبيرات الكرون.

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

ما هي صيغة الكرون الصحيحة؟

خمسة حقول تفصل بينها مسافات (الدقيقة، الساعة، يوم الشهر، الشهر، يوم الأسبوع) يليها الأمر في ملف كرون تاب: */10 * * * * /path/to/script.sh. ويقبل كل حقل رقمًا أو * أو قائمة (1,15) أو نطاقًا (1-5) أو خطوة (*/10).

كم عدد حقول تعبير الكرون؟

خمسة في كرون لينكس. يضيف Quartz وSpring وSalesforce حقلًا للثواني في البداية (ويسمح Quartz وSalesforce أيضًا بحقل اختياري للسنة في النهاية)، أما AWS EventBridge ففيه ستة حقول آخرها السنة.

ماذا تعني النجمة في الكرون؟

«كل القيم». فوجود * في حقل الساعة يعني كل ساعة، والتعبير * * * * * يعمل كل دقيقة.

هل صيغة الكرون واحدة في كل مكان؟

لا. الحقول الخمسة الأساسية مشتركة على نطاق واسع، لكن Quartz وSalesforce يعدّان الأحد 1، ويحتاج AWS إلى حقل السنة والرمز ?، ويضيف Jenkins الرمز H، ويقبل Hangfire وnode-cron حقل ثوانٍ اختياريًا. استخدم المولد الخاص بمنصتك لتلتزم بقواعدها.

هل يمكنني استخدام أسماء مثل MON أو JAN؟

نعم، في حقلي الشهر ويوم الأسبوع: من JAN إلى DEC ومن SUN إلى SAT، بأي حالة أحرف. أما في النطاقات فالأرقام مثل 1-5 هي الخيار الأضمن.

كيف أشغّل مهمة كرون كل 90 دقيقة؟

لا يمكن ذلك بتعبير واحد، لأن خطوة التكرار تبدأ من جديد كل ساعة. استخدم سطرين: 0 0-21/3 * * * و30 1-22/3 * * *، فيعملان معًا عند 0:00 و1:30 و3:00 و4:30 وهكذا.

هل يدعم الكرون الثواني؟

ليس في كرون تاب لينكس، فأصغر وحدة فيه هي الدقيقة. لكن مجدولات مثل Spring وQuartz وnode-cron تضيف حقلًا للثواني، فيعمل */30 * * * * * كل 30 ثانية فيها.

أدوات وأدلة ذات صلة