خبير Crontab

خمسة حقول تفصل بينها مسافات، أو اختصار مثل ‎@daily.

الصق تعبير cron واحصل على شرح لما يفعله حقلًا بحقل، بلغتك. لا حاجة لتذكر ترتيب الحقول أو البحث عن النطاقات: يمر الخبير على كل حقل من الحقول الخمسة (الدقيقة والساعة ويوم الشهر والشهر ويوم الأسبوع) ويقرأ التعبير من اليسار إلى اليمين. مفيد للتحقق من سطر crontab قبل نشره أو لشرح سطر ورثته.

كيفية استخدام الخبير

  1. 1

    الصق التعبير

    انسخ أي تعبير cron قياسي من 5 حقول (مثل `0 9 * * 1-5`) في حقل الإدخال.

  2. 2

    اقرأ التفصيل

    تصف الأداة الجدول الزمني في جملة واحدة، ثم تفصّل الحقول الخمسة كلها: الدقيقة والساعة ويوم الشهر والشهر ويوم الأسبوع. وتُعرض أرقام الأشهر وأيام الأسبوع بأسمائها.

  3. 3

    تحقق من مواعيد التشغيل القادمة

    تسرد الخطوة الأخيرة مواعيد التشغيل الخمسة القادمة للمهمة، محسوبة بحسب منطقتك الزمنية لا بحسب المنطقة الزمنية للخادم. وتحذّرك أيضًا حين يكون الجدول الزمني أوسع مما يبدو، أو حين لا يطابقه أي تاريخ في التقويم.

  4. 4

    تحقق قبل النشر

    استخدم الشرح للتأكد من أن الجدول الزمني يفعل ما تريد قبل وضعه في crontab أو إعدادات CI أو ملف Kubernetes manifest.

ورقة الحقول المرجعية

 ┌───────────── الدقيقة (0-59)
 │ ┌─────────── الساعة (0-23)
 │ │ ┌───────── يوم الشهر (1-31)
 │ │ │ ┌─────── الشهر (1-12 أو JAN-DEC)
 │ │ │ │ ┌───── يوم الأسبوع (0-6 أو SUN-SAT؛ الأحد = 0 أو 7)
 │ │ │ │ │
 * * * * *

العوامل في تعبيرات cron

العامل المعنى مثال
* كل قيمة * * * * *
, قائمة قيم 0,15,30,45
- نطاق 9-17
/ خطوة (بداية/خطوة) */5، 0-30/5
L الأخير (آخر يوم في الشهر أو آخر يوم أسبوعي مطابق، Quartz) L، 5L
W أقرب يوم عمل 15W (Quartz)
# اليوم الأسبوعي المطابق رقم N في الشهر 1#3 (Quartz)
? لا قيمة محددة فقط Quartz

ترتيب القراءة مهم

يُقرأ 0 */2 * * 1-5 من اليسار إلى اليمين على النحو التالي: الدقيقة 0، كل ساعتين، أي يوم في الشهر، أي شهر، من الاثنين إلى الجمعة. أحيانًا يقرأ الناس الحقول من اليمين إلى اليسار بدافع العادة فيلتبس عليهم الأمر؛ ابدأ دائمًا بالدقيقة.

فخ “كل X دقيقة”

يُشغَّل */10 * * * * في الدقائق 0 و10 و20 و30 و40 و50، وليس “كل 10 دقائق منذ إنشاء المهمة”. تُقاس خطوات cron دائمًا من بداية نطاق الحقل. إذا نشرت مهمة في 12:03، فسيكون أول تشغيل في 12:10 وليس 12:13.

بالنسبة للمهام التي تحتاج فعلًا إلى “N دقيقة بعد آخر تشغيل”، استخدم جدولة بمؤقت دائم (مؤقتات systemd مع OnUnitActiveSec أو جدولة على مستوى التطبيق مع تخزين طابع وقت آخر تشغيل).

مزالق cron الجديرة بالمعرفة

  • تعيين يوم الشهر ويوم الأسبوع معًا: معظم تطبيقات cron تعامل ذلك كسلوك OR، وربما لا يكون ما تريده.
  • خطوة 0: */0 غير صالح.
  • نطاق يلتف حول منتصف الليل: 22-2 للساعات لا يعمل في cron التقليدي؛ استخدم 22-23,0-2.
  • 30 فبراير: جدول مثل 0 0 30 2 * لا يُشغَّل أبدًا.
  • غموض التوقيت الصيفي (DST): المهام المجدولة بين 2 و3 صباحًا قد تُشغَّل مرتين أو لا تُشغَّل إطلاقًا في أيام الانتقال إلى التوقيت الصيفي.

cron مقابل أدوات الجدولة الحديثة

ما زال cron في يونكس مستخدمًا في كل مكان، لكن لأي شيء حساس فستريد غالبًا أحد هذه الخيارات:

  • مؤقتات systemd: تلتقط التشغيلات الفائتة، وتدعم الإزاحات العشوائية، وتقرأ من ملفات الوحدات.
  • Kubernetes CronJob: تصريحي، مع إعادة المحاولة، ويدرك المنطقة الزمنية في 1.25+.
  • Airflow / Prefect / Dagster: للمهام ذات الاعتماديات وإعادة المحاولة والبيانات الرجعية والمراقبة.
  • جدولة GitHub Actions: cron من 5 حقول، بتوقيت UTC فقط، بفاصل زمني أدنى 5 دقائق، مع تسليم بأفضل جهد.

cron في حد ذاته تنسيق رائع، لكنه أداة جدولة ضعيفة للمهام التي لا يجوز تفويتها.

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

لأن يوم الأسبوع 0 هو الأحد في cron القياسي (و7 أيضًا يوم الأحد، ما يدعم الصيغتين). الاثنين هو 1. أما Quartz فترقّم أيام الأسبوع من 1 إلى 7 بحيث يكون الأحد = 1، وهذا كثيرًا ما يُربك من ينتقل بين الصيغ.

يعمل cron التقليدي في يونكس بالمنطقة الزمنية المحلية للخادم، أي ما يقوله /etc/timezone. أما Kubernetes CronJob وGitHub Actions ومعظم أدوات الجدولة السحابية فتعمل بتوقيت UTC افتراضيًا. تحقق دائمًا، واستخدم UTC كلما أمكن لتجنب مفاجآت التوقيت الصيفي.

لا يستطيع cron التقليدي التعبير عن ذلك مباشرة. الحل البديل: شغّل المهمة كل اثنين وتحقق من التاريخ داخل السكربت: [ $(date +%d) -le 7 ] && ./job.sh. أما Quartz فتدعم ذلك أصليًا عبر 1#1.

لا. يحتاج كل جدول إلى سطر خاص به. لكن يمكنك دمج عدة جداول في سطر واحد باستخدام القوائم: 0 9,17 * * * يعمل في 9 و17. أما الجداول التي لا يمكن التعبير عنها في سطر واحد فأضف لها عدة أسطر تشير إلى الأمر نفسه.

أدوات ذات صلة

مرجع جدول ASCII

جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.

مرجع أحرف HTML

قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.

أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator)

إزالة التشفير من كود جافا سكريبت مُصغَّر أو مُعبَّأ باستخدام إعادة تسمية المتغيرات، وفك ترميز السلاسل النصية ومصفوفات البيانات، بالإضافة إلى عكس تسطيح تدفق التحكم وتحسين هيكله.

مولد تراخيص

قم بإنشاء النص الكامل لترخيصات المصدر المفتوح مع إدخال اسمك والسنة المقابلة، ويشمل ذلك تراخيص MIT وApache 2.0 وGPLv3 وBSD-3 وMPL-2.0 وCC.

مولّد إعدادات Nginx

أنشئ كتل server في Nginx مع TLS وHTTP/2 وgzip والتخزين المؤقت في المتصفح وقواعد الوكيل العكسي، انطلاقًا من نموذج بسيط.

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

تحقق من عنوان بريد إلكتروني: فحص صياغة RFC 5322، واستعلام حي عن سجل MX، بالإضافة إلى تفاصيل الجزء المحلي والنطاق والطول. لا يتم إرسال أي بريد.

الأداة متاحة بلغات أخرى