متوفر أيضًا بلغات أخرى: English · Español · Português · Français
محلّل تعبيرات cron: افهم متى تعمل مهمتك بالضبط
الصق تعبير cron فتحصل على شرح بلغة مبسّطة، وتفكيك للحقول الخمسة، وقائمة بالتشغيلات العشر القادمة في منطقتك الزمنية.
ما هو تعبير cron؟
تعبير cron سطر واحد يخبر نظامًا شبيهًا بيونكس متى يُشغّل أمرًا أو مهمة، بدل أن يفعل ذلك إنسانٌ يدويًا في كل مرة. والصيغة القياسية الموصوفة في صفحة الدليل crontab(5) تتكوّن من خمسة حقول مفصولة بمسافات، بهذا الترتيب: الدقيقة، ثم الساعة، ثم يوم الشهر، ثم الشهر، ثم يوم الأسبوع. وحين تسأل نفسك «ما معنى تعبير cron هذا؟»، فأنت في الحقيقة تسأل عن قيمة كل حقل من هذه الحقول الخمسة.
تقبل الدقيقة قيمة من 0 إلى 59، والساعة من 0 إلى 23 بنظام الأربع وعشرين ساعة، ويوم الشهر من 1 إلى 31، والشهر من 1 إلى 12 أو باسمه الإنجليزي المختصر من ثلاثة أحرف، ويوم الأسبوع من 0 إلى 7 حيث يدل كلٌّ من 0 و7 على الأحد، أو تُكتب أسماء الأيام الإنجليزية مختصرة كذلك. وكل مدى مكتوب بشرطة (مثل 1-5) يشمل طرفيه، والقوائم تُفصل بفواصل، والخطوة تُكتب بشرطة مائلة بعد مدى أو بعد نجمة (مثل */15)، ولا فرق بين الحروف الكبيرة والصغيرة في الأسماء.
كيف تستعمل الأداة
- اكتب التعبير. الصق حقولك الخمسة، أو استعمل اسمًا مختصرًا مثل @daily أو @hourly، وستظهر النتيجة فور الكتابة.
- اختر منطقتك الزمنية. تفترض الأداة منطقة جهازك تلقائيًا، ويمكنك تبديلها لترى كيف تتغيّر أوقات التشغيل من مكان إلى آخر.
- اقرأ الملخص والجدول. ستجد شرحًا بلغة مبسّطة، وتفكيكًا للحقول الخمسة، وقائمة بالتشغيلات العشر القادمة، مع أي تنبيه يخص تغيير التوقيت الصيفي.
حين يُقيَّد يوم الشهر ويوم الأسبوع معًا: القاعدة «أو» لا «و»
أكثر افتراض خاطئ حول تعبيرات cron يتعلق بحقلَي يوم الشهر ويوم الأسبوع معًا. فحين يُقيَّد الحقلان في التعبير نفسه، أي لا يحمل أيٌّ منهما علامة النجمة، يقول crontab(5) بالنص: «If both fields are restricted (i.e., do not contain the '*' character), the command will be run when EITHER field matches the current time.» أي أن العلاقة بينهما «أو»، لا «و» كما يفترض معظم من يقرأ التعبير أول مرة.
خذ التعبير 0 0 13 * 5. القراءة البديهية تقول: «منتصف ليل كل جمعة توافق اليوم الثالث عشر من الشهر»، أي جمعة الثالث عشر تحديدًا. لكن القاعدة الفعلية تجعله: منتصف ليل اليوم الثالث عشر من كل شهر، أو منتصف ليل كل جمعة، أيهما وقع أولًا. والفرق بين القراءتين ضخم بالعدد: في سنة 2026 وحدها يعمل هذا التعبير في 61 يومًا، مقابل ثلاث جُمَع فقط يوافق فيها الثالث عشر يوم جمعة طوال تلك السنة.
وإن كان المطلوب فعلًا جمعة الثالث عشر وحدها، أي التقاطع لا الاتحاد، فلا صيغة قياسية في cron تعبّر عن ذلك: الحقلان يُجمعان بـ«أو» دائمًا حين يُقيَّدان معًا، ولا استثناء لهذه القاعدة. الحل العملي أن تُشغَّل المهمة كل جمعة (0 0 * * 5)، ثم يتحقق السكربت نفسه من تاريخ اليوم ويخرج بلا فعل إن لم يكن الثالث عشر.
وهذه الأداة تُظهر لك هذه الحالة بوضوح: حين يكون الحقلان معًا مقيَّدين، يظهر تنبيه صريح يذكّرك بأن القاعدة «أو» لا «و»، بدل أن تكتشف ذلك بعد أن تعمل المهمة في يوم لم تقصده.
تغيير التوقيت الصيفي، وحين تختلف الأدوات في معنى النجمة
تغيير التوقيت الصيفي ليس تفصيلًا أُغفل من مواصفة cron، بل منصوص عليه فيها بوضوح. يقول crontab(5): «non-existent times, such as the 'missing hours' during the daylight savings time conversion, will never match, causing jobs scheduled during the 'missing times' not to be run»، ويضيف أن الأوقات التي تحدث أكثر من مرة تجعل المهمة المطابقة تعمل مرتين. وهذه الأداة تعيد إنتاج هذا السلوك بالحرف، بدل أن تختار إحدى الحالتين بصمت وتتجاهل الأخرى.
وقياسًا على أمثلة فعلية من نيويورك سنة 2026، حيث تتقدّم الساعة في 8 مارس وتتأخر في أول نوفمبر: مهمة مضبوطة على 02:30 كل يوم لا تعمل إطلاقًا يوم 8 مارس، لأن الساعة 02:30 غير موجودة أصلًا في ذلك اليوم. ومهمة مضبوطة على 01:30 كل يوم تعمل مرتين يوم أول نوفمبر، بفارق ساعة كاملة بينهما، لأن 01:30 تحدث مرتين. وحتى مهمة بسيطة كل ساعة (0 * * * *) تتأثر: تعمل 23 مرة يوم 8 مارس لا 24، والتشغيلة الناقصة هي التي كانت مقررة عند الساعة 02:00.
أما معنى «حقل يحمل نجمة» في قاعدة الحقلين السابقة، فهذه نقطة تختلف فيها التطبيقات فعلًا، وهذه الأداة تتبع سلوك cron نفسه بالضبط. ففي شيفرة cron المصدرية تُضبط العلامة التي تحدّد كون حقل اليوم يحمل نجمة اعتمادًا على أول حرف يُقرأ في ذلك الحقل، قبل تحليله بالكامل، فتعبير مثل */9 يُحسب حقلًا يحمل نجمة ولا يُعامَل مقيَّدًا، وبالتالي لا تسري عليه قاعدة «أو» مع يوم الأسبوع.
وللتأكد من ذلك، أُجري اختبار تفاضلي على 5,076 تعبيرًا مولَّدًا عشوائيًا مقابل تطبيق مرجعي واسع الانتشار، فظهر 1,262 اختلافًا. وبتحليل هذه الاختلافات كلها تبيّن أن سببها واحد فقط في كل مرة: معاملة */n. لا اختلاف واحد بلا تفسير، وحين تختلف التطبيقات على هذه النقطة، تختار هذه الأداة سلوك cron نفسه لا أي تطبيق آخر.
لماذا هذه الأداة مجانية؟
كل عمليات تحليل تعبير cron وحساب التشغيلات القادمة تجري داخل متصفحك مباشرة، ولا يُرسَل تعبيرك ولا منطقتك الزمنية إلى أي خادم. ولأن الأداة لا تحتاج خادمًا يقرأ نصًا ويعالجه، فلا تكلفة تشغيل تُحمَّل على الزيارة، ولذلك هي مجانية بالكامل بلا حد استخدام وبلا حاجة إلى حساب أو تسجيل، ودون أي علامة مائية على النتيجة.