0 10 * * 3 أم * 10 * * 3؟ اقرأ حقل الدقيقة
0 10 * * 3 ينطلق مرة واحدة؛ * 10 * * 3 ينطلق ستين مرة في الساعة. اقرأ حقل الدقيقة، وتحقق من ترتيب الحقول، ثم انتظر الجاهزية بدلًا من الساعة.
يبدو التعبيران كأنهما صباح يوم الأربعاء، لكن واحدًا منهما فقط يعني مرة واحدة. 0 10 * * 3 ينطلق عند الساعة 10:00 يوم الأربعاء؛ أما * 10 * * 3 فينطلق في كل دقيقة من ساعة العاشرة، أي ستون فرصة لبدء النفق نفسه. إذا كان الأمر برنامج تشغيل لا يتحقق من وجود جلسة قائمة، فإن الصيغة الثانية ليست خطأ في الجدولة، بل حلقة تُنتج مالكين متنافسين. اقرأ حقل الدقيقة قبل أن تقرأ أي شيء آخر.
الحقول الخمسة هي الدقيقة والساعة ويوم الشهر والشهر ويوم الأسبوع بهذا الترتيب، والنجمة في الحقل الأول تعني كل دقيقة.
حقل الدقيقة يحدد عدد المرات
الرقم الأول هو الدقيقة، لذا 0 10 * * 3 هو الدقيقة الأولى من الساعة العاشرة يوم الأربعاء. واستبداله بنجمة يحتفظ بالساعة واليوم ويسقط خاصية «مرة واحدة»، ما ينتج ستين مطابقة. لا يزيل cron التكرار: كل مطابقة تُطلق الأمر من جديد. وهذا ليس تفصيلًا دقيقًا في cron بل دلالة الحقول، ومن المفيد قراءة مرجع المجدول المثبت لأن ترتيب الحقول وعمود اسم المستخدم الاختياري يختلفان بين crontab المستخدم وcrontab النظام.
اختبر بأمر غير ضار يسجل طابع الوقت الخاص به لمدة يوم. سطر واحد في السجل يعني جدولة؛ وستون سطرًا داخل ساعة يعني درسًا.
ماذا يفعل الانطلاق الثاني بالانطلاق الأول
برنامج التشغيل المهذب يلاحظ أن الاتصال قائم بالفعل فلا يفعل شيئًا. أما استدعاء openvpn الخام فلا: فهو ينشئ عملية أخرى، محاولة أخرى لربط جهاز أو منفذ، ومجموعة أخرى من المسارات تتنافس على الوجهات نفسها. في NetworkManager، طلبات التنشيط المتكررة لاتصال واحد تكون عادةً متطابقة الأثر، ولهذا بالضبط تبقى المشكلة مخفية حتى يستخدم أحدهم أمرًا مختلفًا. ينبغي أن تسأل الجدولة المالك الذي يدير النفق بالفعل.
ثم قرر ما يعنيه الطلب أثناء اتصال قيد الإنشاء. لا التنشيط المكرر ولا طابور من عمليات البدء المعلقة صحيح بشكل بديهي؛ اختر واحدًا واجعل برنامج التشغيل ينفذه، بدلًا من أن يقرر المجدول ذلك بالصدفة.
عُدَّ الحقول قبل الأمر
يختلف crontab المستخدم وcrontab النظام في ظهور عمود اسم المستخدم قبل الأمر. والإدخال المنسوخ بينهما إما يعمل بحساب خاطئ أو يمرر اسم المستخدم كأول كلمة في الأمر. تحقق من المرجع المثبت بدلًا من دليل، وعُدَّ الحقول في سطرك. إدخال بخمسة حقول وكلمة سادسة قبل الأمر هو crontab نظام؛ والسطر نفسه في crontab مستخدم يحاول تنفيذ تلك الكلمة كبرنامج.
هوية التنفيذ تحمل البيئة معها. مهمة cron لا ترث حلقة مفاتيح مفتوحة، ولا مطالبة كلمة مرور تفاعلية، ولا دليل العمل الذي اختبرت فيه.
انتظر الجاهزية، لا الساعة
الانطلاق الناجح ليس نفقًا يعمل. قد يكون العميل ما زال يحل نقطة النهاية أو يوثق أو يثبت المسارات حين تخرج المهمة. أي مهمة تابعة ينبغي أن تنتظر المورد المحمي الذي تحتاجه فعليًا، بمهلة محدودة وفشل مسجل، بدلًا من عدد ثابت من الثواني. هذا الفارق يفصل جدولة تعمل في الأغلب عن أخرى تفشل بصمت في الصباح المزدحم.
إذا كان التحقق متعدد العوامل التفاعلي مطلوبًا في تلك الساعة، يمكن للمهمة أن تطلب انتباه شخص لكنها لا تستطيع تقديم الاستجابة. أبقِ تلك الحالة صريحة بدلًا من تضمين كلمة مرور قابلة لإعادة الاستخدام أو إعادة المحاولة إلى ما لا نهاية.
للتنشيط الأحادي فعلًا، استخدم آلية التشغيل لمرة واحدة المدعومة. القاعدة المتكررة التي يجب تذكرها وحذفها هي انطلاق مكرر في المستقبل.