صيغة تعبير 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)
ملاحظات موثوقة:
- يحدد معيار POSIX[1] الحد الأدنى لمواصفات التوافق، ويتطلب دعم رموز
* و , و -.
- تطبيقات
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 |
خامسًا: الأدوات الموصى بها للتحقق والمراجع الموثوقة
-
صفحة دليل Crontab
نفّذ man 5 crontab في الطرفية للحصول على الصياغة الكاملة - المرجع المحلي الموثوق الأكثر مباشرة.
-
مولّدات تعبيرات Cron
-
وثائق مشاريع المصادر المفتوحة
سادسًا: الملخص
من خلال الجمع بين معايير POSIX وصفحات دليل Linux ووثائق التطبيقات الرئيسية (مثل Cronie)، يمكن للمستخدمين فهم المنطق الأساسي لتعبيرات cron بدقة. بالنسبة للاستخدامات المتقدمة (مثل L و W)، انتبه إلى توافق التطبيقات واعتمد على المصادر الرسمية أولاً.
المراجع