منشئ تعبيرات Cron لنظام Unix

مولّد تعبيرات Cron بصري لتكوين المهام المجدولة. يدعم إعدادات وحدات الثواني والدقائق والساعات والأيام والشهور والأسابيع، وينشئ تعبيرات Cron قياسية تلقائيًا.

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

من خطوة
كل دقيقة
من إلى

النتيجة المُنشأة

أدخل تعبير Cron موجودًا لضبط خيارات النموذج المقابلة تلقائيًا

أوقات التنفيذ التالية

فهم تعبيرات Cron

صيغة تعبير Cron


أولاً: البنية الأساسية لتعبيرات Cron (مع مصادر موثوقة)

يتكون تعبير cron القياسي من 5 حقول زمنية وحقل أمر واحد، وفقًا لاتفاقيات نظامي Unix و Linux. وفقًا لمعيار IEEE Std 1003.1-2017 (معيار POSIX)[1] ووثائق Linux man 5 crontab[2]، الصيغة هي:

* * * * * command-to-execute
│ │ │ │ │
│ │ │ │ └── Day of Week (0-7, both 0 and 7 represent Sunday)
│ │ │ └──── Month (1-12)
│ │ └────── Day of Month (1-31)
│ └──────── Hour (0-23)
└────────── Minute (0-59)

ملاحظات موثوقة:

  1. يحدد معيار POSIX[1] الحد الأدنى لمواصفات التوافق، ويتطلب دعم رموز * و , و -.
  2. تطبيقات cron في نظام Linux (مثل Cronie) توسّع الوظائف بقيم الخطوات (/) والسلاسل الخاصة (@daily، وما إلى ذلك)، كما هو مفصّل في وثائقها الرسمية[3].

ثانيًا: قواعد رموز الحقول الزمنية

يدعم كل حقل زمني الرموز الخاصة التالية:

الرمز الوصف مثال
* يطابق أي قيمة * في الدقائق = كل دقيقة
, يحدد قيمًا متعددة 1,3,5 = الدقائق 1 و 3 و 5
- يحدد نطاقًا 10-15 = الدقائق من 10 إلى 15
/ قيم الخطوات (فاصل) */5 في الدقائق = كل 5 دقائق
? "لا توجد قيمة محددة" (فقط لـ DOM/DOW) يُستخدم لتجنب التعارضات

تطبيقات cron الحديثة (مثل Vixie cron ومشتقاتها) تدعم قواعد صياغة أكثر ثراءً. وفقًا لوثائق مرجع Cron من IBM[4] وويكي مشروع Cronie[3]، الرموز التالية مدعومة على نطاق واسع:

الرمز الوصف مثال الوثائق الرسمية
L اليوم الأخير (مدعوم في بعض التطبيقات) 0 0 L * * = التنفيذ في اليوم الأخير من كل شهر[5]
W أقرب يوم عمل (مثال: 15W = أقرب يوم عمل من اليوم 15) راجع وثائق Quartz Scheduler[6] (شائع في نظام Java)

ثالثًا: أصل الأسماء المستعارة المعرفة مسبقًا (@daily، وما إلى ذلك)

نشأت @daily و @weekly والأسماء المستعارة المشابهة من تطبيق cron لـ Paul Vixie (Vixie cron، صدر في 1987)[7]، وهي الآن ميزات افتراضية في توزيعات Linux الحديثة (مثل Debian و Red Hat). وفقًا لدليل cron في Debian[8]:

# ما يعادل 0 0 * * *
@daily /path/to/script

رابعًا: الاختلافات الشائعة بين التطبيقات واعتبارات

تختلف تطبيقات cron المختلفة اختلافات طفيفة، مما يتطلب الرجوع إلى وثائقها الخاصة:

التطبيق الميزات رابط المورد الرسمي
Cronie cron الافتراضي في Red Hat، يدعم اختصارات @ Cronie GitHub
systemd يستبدل cron بوحدات .timer (موصى به للأنظمة الجديدة) دليل systemd.timer
fcron يدعم صياغة أكثر تعقيدًا (مثال: @yearly) موقع fcron

خامسًا: الأدوات الموصى بها للتحقق والمراجع الموثوقة

  1. صفحة دليل Crontab نفّذ man 5 crontab في الطرفية للحصول على الصياغة الكاملة - المرجع المحلي الموثوق الأكثر مباشرة.

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

  3. وثائق مشاريع المصادر المفتوحة


سادسًا: الملخص

من خلال الجمع بين معايير POSIX وصفحات دليل Linux ووثائق التطبيقات الرئيسية (مثل Cronie)، يمكن للمستخدمين فهم المنطق الأساسي لتعبيرات cron بدقة. بالنسبة للاستخدامات المتقدمة (مثل L و W)، انتبه إلى توافق التطبيقات واعتمد على المصادر الرسمية أولاً.


المراجع

[1] معيار POSIX: تعريف Cron
[2] صفحة دليل Linux man 5 crontab
[3] الوثائق الرسمية لـ Cronie: GitHub Wiki
[4] مرجع IBM Cron: شرح صيغة Cron
[5] صياغة Quartz Cron: وثائق Quartz Scheduler
[6] تاريخ Vixie cron: Vixie cron Wiki
[7] دليل Debian cron: Debian CronHowto
[8] دليل systemd.timer: الوثائق الرسمية لـ systemd
[9] دليل Ubuntu Cron: وثائق مجتمع Ubuntu Cron

الأسئلة الشائعة (FAQ)

ما هو تعبير Cron؟

تعبير Cron هو سلسلة نصية تتكون من 5 أو 7 حقول مفصولة بمسافات، تُستخدم لتمثيل جدولة في أنظمة تشغيل شبيهة بـ Unix. يتيح لك جدولة المهام (مثل النسخ الاحتياطي أو البرامج النصية) لتعمل تلقائيًا في أوقات أو فترات محددة.

ما الفرق بين الوضع القياسي والوضع الموسّع؟

يستخدم الوضع القياسي 5 حقول (الدقيقة والساعة ويوم الشهر والشهر ويوم الأسبوع) وهو الصيغة القياسية التي تستخدمها مهام cron في Linux/Unix. يستخدم الوضع الموسّع 7 حقول، مضيفًا الثواني في البداية والسنوات في النهاية. وهذا يُستخدم غالبًا بواسطة مجدولي التطبيقات الحديثة مثل Quartz (Java) أو Spring.

ماذا يعني الرمز '?' في Cron؟

الرمز '?' يعني 'لا توجد قيمة محددة'. يُستخدم فقط في حقلي 'يوم الشهر' و'يوم الأسبوع'. وهو مفيد عندما تحتاج إلى تحديد شيء في أحد هذين الحقلين دون الاهتمام بالآخر. على سبيل المثال، إذا أردت تشغيل مهمة في اليوم العاشر من الشهر بغض النظر عن يوم الأسبوع، تضع '10' في حقل يوم الشهر و '?' في حقل يوم الأسبوع.

هل يمكنني توليد تعبير Cron من تعبير موجود؟

نعم! يمكنك استخدام ميزة 'التحليل العكسي'. ببساطة الصق تعبير Cron الموجود في مربع الإدخال وانقر على 'تحليل التعبير'. سيتم تحديث المنشئ البصري تلقائيًا ليعكس إعدادات التعبير.