اتقان المهمة Cron و Automating Server المهام

المادة التي كتبها: جيري لو
  • مقالات مميزة
  • تحديث: أكتوبر 17 ، 2020

تم تصميم استضافة الويب ليكون سهلاً ومباشرًا ومثاليًا للمحترفين المتنقلين وببساطة لا يمكن تكريسه كل ساعة من كل يوم إدارة خادم الاستضافة الخاص بهم والمهام المرتبطة بها.

لتحقيق هذه الغاية ، يقدم كل خادم تقريبًا يعتمد على نظام التشغيل Unix أو Linux مدير مهام آليًا يُعرف باسم "كرون الوظيفة"أو" Crontab. "

تشبه أداة البرنامج هذه جدولة المهام في Microsoft Windows ، حيث يمكن أن يقال لها أن تفعل أشياء معينة في أوقات معينة ، مما يوفر على المستخدم القيام بهذه المهام يدويًا. هذا مهم بشكل خاص عندما يعتبر المرء أن العديد من إجراءات الصيانة الروتينية للخادم والنسخ الاحتياطي والاتصالات قد تستغرق ساعات وساعات لإكمالها. يرغب معظم الناس ببساطة في العودة إلى ديارهم بعد قضاء يوم في المكتب والاسترخاء ، بدلاً من قضاء المساء في نسخ الملفات وإدارة جهات الاتصال.

هؤلاء الأشخاص محظوظون ، حيث يمكن جدولة كل مهمة على أساس يومي أو أسبوعي أو شهري - أو أبعد من ذلك ، في بعض الحالات ، ويمكن إعطاء تعليمات محددة للخادم داخل الأداة المساعدة Crontab حول كيفية أداء المهمة ، وكيفية معرفة وقت اكتمالها ، وماذا تفعل عندما تنتهي المهمة الحالية بالفعل.

سيكون المستخدمون قادرين على الاسترخاء بينما يقوم الخادم الخاص بهم بكل الأحمال الثقيلة لساعات ؛ أو يمكنهم ببساطة جدولة العمل المراد إكماله أثناء عملهم بجد في مكاتبهم. نظرًا لأنها آلية ، يمكن أن تحدث مهمة Cron في أي ساعة تقريبًا من اليوم.

تعلم معرفة الوقت باستخدام تنسيق Cron Job

وظيفة Cron ليست بالأمر السهل إتقانها ؛ في الواقع ، تعتبر على نطاق واسع واحدة من التكوينات الأكثر تقدما المتاحة على مستوى لينكس or يونكس قاعدة بيانات للانترنت. يرجع هذا جزئيا إلى أن اللغة المستخدمة في برمجة هذه الوظائف قديمة إلى حد كبير ، وفي بعض الحالات ، إلى الوراء تمامًا. عندما يتعلق الأمر بإخبار وقت معين عن وظيفة Cron أو Cron تبعاً لذلك ، فإن الأمور بالتأكيد ستكون عكسية ومقلوبة ومربكة قليلاً.

الشكل الخاص بإخبار الوقت عن طريق مهمة Cron هو:

MINUTE HOUR DAY-OF-MONTH MONTH OF DAY OF WEEK COMMAND

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

من المهم أن نلاحظ أن كل جانب من جوانب وقت وظيفة Cron هو عدد ؛ لا توجد أسماء لشهر أسماء اليوم ، أو أي كلمات أخرى تستخدم طوال تطوير الوقت الذي يجب أن يتم تنفيذ المهمة فيه.

لذلك ، دعونا نقوم بتعيين وظيفة Cron إلى 10: 30 am في يوليو 7th من أجل التعود على كيفية ظهور وقت عمل Cron عندما يتحول إلى أرقام صارمة.

30 10 07 07 *

يوضح المثال أعلاه أنه يجب إكمال المهمة في الدقيقة 30th من الساعة العاشرة في اليوم السابع من الشهر السابع. كل الأرقام مكونة من رقمين ، حتى عندما يكون الشهر أو اليوم مجرد رقم واحد. من المهم تذكر ذلك ، لأن رقمًا واحدًا غالبًا ما يتسبب في كون مهمة Cron غير صالحة ولن يتم تنفيذها أبدًا. في نهاية هيكل الاشتراكات ، تشير العلامة النجمية إلى أنه ينبغي تنفيذ المهمة في أي يوم من أيام الأسبوع. هذا أمر مهم ، لأن تعيينه على 03 ليوم الأربعاء سيعني أن المهمة لن يتم تنفيذها إلا في يوليو 7th إذا كان ذلك اليوم يوم الثلاثاء. من المحتمل أن يحدث هذا مرة واحدة كل سبع أو ثماني سنوات ، وهو أمر قليل الامتصاص لمعظم المطورين للنظر فيه.

من الاعتبارات المهمة الأخرى التي يجب اتخاذها عند إنشاء مهمة Cron أن تنسيق الساعة هو وقت عسكري لساعة 24 وليس زمنًا مدنيًا مدته ساعة 12. لتغيير وقت مهمة Cron إلى 10 ، سيتم تغيير الساعة إلى 22 بدلاً من 10 الحالي.

أمثلة مهمة كرون

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

  • @اليومي
  • @شهريا
  • @سنوي

نظرًا لأنه لا يمكن التحكم في الوقت وتحديده بدقة باستخدام الساعات والدقائق ، فستحدث هذه المهام في منتصف الليل تمامًا ، وفقًا للوقت الداخلي للخادم ، في الفترة الزمنية المطلوبة. هذا يعني أن الفاصل الزمني الشهري سيحدث في منتصف الليل تمامًا في اليوم الأول من كل شهر. سيحدث الفاصل الزمنيyear في منتصف الليل بالضبط في اليوم الأول من كل عام ؛ سيحدث الفاصل الزمنيdaily في منتصف الليل بالضبط كل يوم واحد من السنة.

وهذا أسهل بكثير من تحديد تاريخ معين ، ووقت ، ويوم من الأسبوع ، ولكن بعض المهام التي يتم تنفيذها في منتصف الليل في اليوم الأول من الشهر أو السنة قد يكون لها بعض العوائق لبعض العملاء. احتفظ دائمًا باحتياجات كل من المسؤولين وزوار الموقع في الاعتبار عند جدولة المهام التي تحدث في منتصف الليل تمامًا.

استيعاب متغير "الأمر" وماذا تفعل به

كما يتضح من المثال أعلاه ، فإن إنشاء وظيفة Cron الفعلية أمر سهل نسبيًا. يجب تحديد التاريخ أولاً ثم يتم تحديد وظيفة وظيفة Cron على الفور بعد ذلك. يمكن أن تكون هذه الوظيفة حرفياً أي شيء ، بما في ذلك تشغيل برنامج PHP نصي أو تشغيل برنامج نصي احتياطي مخصص يخزن ملفات وبيانات الخادم في ملف بعيد أو محلي. للتوضيح ، سنبني على المثال الذي تم استخدامه سابقًا ونطلب من وظيفة Cron تشغيل نص PHP في 7 يوليو الساعة 10:30 صباحًا. سيُطلق على سكربت PHP هذا اسم "backup.php" وسنفترض أن ملف PHP هو برنامج نصي احتياطي كامل يجمع ملفات الموقع ويضغطها ويخزنها في السابع من الشهر عندما يُطلب منك ذلك من الخادم. هذا ما يبدو عليه:

30 10 07 07 * http://your-domain-name.com/backup-scripts/backup.php

عندما يتم إدخال مهمة Cron هذه في قائمة علامات تبويب Cron الخاصة بالخادم ، سيتم تنفيذها تلقائيًا في الساعة 10:30 صباحًا كل 7 يوليو من كل عام. سيقوم بتشغيل سكربت PHP للنسخ الاحتياطي الموجود في دليل "backup-scripts" ، وهذا هو المكان الذي يعمل فيه العبقرية الحقيقية لإعداد مهمة Cron.

بدلاً من طلب أوامر متقدمة لمستخدميها لتنفيذ أشياء مثل النسخ الاحتياطي للموقع والذاكرة المؤقتة ، فإنه ببساطة يمنح المستخدمين القدرة على تنفيذ البرامج النصية الموجودة في فترة زمنية محددة أو في تاريخ محدد في وقت محدد. هذا يعني عدم الحاجة إلى معرفة برمجة متقدمة تتجاوز ما يعرفه المستخدم بالفعل. PHP قادر تمامًا على نسخ ملفات الموقع ، كما هو الحال في ملفات البرمجة واللغات الأكثر تقدمًا والتي قد يطوّرها المستخدم الأكثر تطوّرًا لخادم Linux.

يمكن استخدام هذا الإعداد البسيط للقيام بأي شيء افتراضيًا ، طالما أن النص المكتوب مسبقًا يوفر تنفيذ هذه الإجراءات بشكل مستقل عن إدخال المستخدم. هذا يعني أن أي برنامج نصي يتم تنفيذه بواسطة مهمة Cron ضمن علامة التبويب Cron يجب أن يكون آليًا تمامًا وقادرًا على الأداء بمفرده. على سبيل المثال ، سيكون من المستحيل (وبكل بساطة غير منطقية) أن تخبر وظيفة Cron بتنفيذ ملف WordPress أو ملف القالب كل يوم في نفس الوقت. ببساطة لا توجد أي إجراءات أو عمليات آلية محددة ، وفي حين أن مهمة Cron ستنفذ الملف بالتأكيد ، فإنه لن يفعل شيئًا ، وسيظل ثابتًا حتى يتم إدخال إدخال المستخدم بطريقة أخرى.

لهذا السبب ، في حالة تشفير أو تنزيل البرامج النصية الاحتياطية أو الآخرين للعمل مع وظائف Cron ، تأكد دائمًا من أنها تتطلب إدخال المستخدم تمامًا لتنفيذ وظائفهم بنجاح. يجب إقران جدولة المهام التلقائية مع عملية آلية داخل الملف الذي ينفذه. لا توجد استثناءات لهذه القاعدة.

اتقان ملف التبويب Cron الكلي على خادم نموذجي

كل مهمة محددة من Cron المحددة لتنفيذها تقع ضمن ملف أكبر يعرف باسم Cron tab. تحتوي بعض الخوادم على علامات تبويب Cron متعددة لأنواع متعددة من التطبيقات والمدخلات التلقائية ، ولكن هذا نادر ومخصص بشكل كبير لمعظم مشغلي وخوادم الخادم المتقدم. يمكن لأولئك الذين لديهم ملف Cron tab واحد فقط استخدام الأوامر أدناه لتحرير الملف أو حذفه أو عرضه بالكامل ، مع سرد كل من المهام التلقائية المحددة الخاصة بهم للعرض داخل الملف.

crontab -r

هذا الأمر يزيل (وبالتالي "r") أو يحذف ملف علامة تبويب Cron بأكمله. سيؤدي هذا إلى مسحه بشكل فعال من جميع الأوامر والبرامج النصية الآلية ، واستعادته إلى ملف فارغ يمكن إعادة بنائه. هذا خيار مناسب لأولئك الذين تمكنوا من إتلاف الملف أو اختلاس المهام والأوقات بطريقة ما. في بعض الأحيان ، يكون من الأسهل البدء من جديد.

-e كرونتاب

في هذه الحالة ، يشير الحرف "e" إلى "تحرير". يمكن للمستخدمين الذين يرغبون في تحرير الوظائف الموضحة في علامة تبويب Cron بدلاً من حذف الملف بالكامل استخدام هذا الأمر ليتم نقلهم إلى محرر سطر الأوامر والذي سيسمح لهم بإضافة مهام جديدة أو إزالة المهام القديمة أو تغيير الجدول المطبق مرات لكل مهمة من مهام Cron المدرجة في مستند علامة التبويب Cron.

crontab -l

في هذه الحالة ، من السهل تذكرها بربط الحرف "L" بـ "المظهر. يسمح هذا الأمر لمسؤول الخادم بعرض المحتويات الكاملة لملف علامة تبويب Cron الخاص بهم دون إزالته من الخادم تمامًا وبدون القدرة على تحرير المحتويات. يعد هذا العرض للقراءة فقط لمحتوى علامة تبويب Cron مثاليًا لتذكر المهام التي تمت جدولتها في أي الأوقات ، وللتحقق من سلامة الملف نفسه.

لماذا من المهم السيطرة على وظيفة Cron في ملفات أتمتة علامة تبويب Cron

بشكل عام ، الشيء الوحيد التلقائي عن الخادم هو دوران القرص الثابت الخاص به وأداء ميزات الأجهزة الخاصة به. أبعد من ذلك ، على الرغم من ذلك ، يجب على الخادم أن يكون مدربًا ومدروسًا للقيام بمهام روتينية وغير عادية تذهب إلى أبعد من مجرد عرض لوحة تحكم البرنامج أو ترقية تثبيت PHP أو Perl الذي وضعه المستخدم على القرص الثابت.

من المهم أن تتذكر أن إحدى الوظائف الأساسية التي يمكن للخادم تنفيذها على أساس منتظم هي إنشاء نسخة احتياطية للموقع من البيانات والإعدادات. لا توجد أي طريقة تقريبًا لأتمتة هذه العملية بدون وظيفة Cron ، نظرًا لطبيعة الإنترنت وجميع الزوار الضارين الذين يمرون عبر موقع يوميًا ، فقد يؤدي الفشل في أتمتة هذه العملية بشكل يومي أو أسبوعي إلى حدوث وفقدان البيانات الكارثية.

علاوة على ذلك ، على الرغم من ذلك ، هناك عدد من المهام التي يجب أن تكون آلية باستخدام عملية مهمة Cron. تتضمن هذه المهام تطهير أي ذاكرة التخزين المؤقت للموقع التي قد تعرض الصور القديمة أو المحتوى المطبوع لزوار الموقع ؛ ويتضمن أيضًا حذف الملفات القديمة وتنظيف الدلائل والصور القديمة والتأكد من أن كل شيء مخزّن على محرك القرص الثابت للخادم حديث وغير تالف.

تمامًا مثل جهاز كمبيوتر شخصي سليم يقوم تلقائيًا بجدولة صيانة القرص ، وفحص الفيروسات والبرامج الضارة ، وتحديثات البرامج ، وحذف الملفات ، يجب تهيئة الخادم السليم للعناية بنفسه والبقاء في وضع جيد. خلاف ذلك ، يصبح عرضة للحوادث ، ومحاولات القرصنة ، وفقدان البيانات التي من شأنها أن تؤدي إلى فقدان الأرباح ، والإعلان ، وإنشاء المحتوى ، وحتى وضع ترتيب محرك البحث.

سهلة التعلم وأسهل للنشر

يعد إنشاء مهمة Cron ضمن علامة التبويب Cron القياسية أحد أسهل الأمور التي يمكن لمسؤول الخادم القيام بها.

تكمن العملية في سطر الأوامر القياسي وتقسم كل جزء من الوقت إلى رمز مكون من رقمين.

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

عن جيري لو

مؤسس WebHostingSecretReveals.net (WHSR) - مراجعة استضافة موثوق بها ويستخدمها مستخدمو 100,000. خبرة تزيد عن 15 في مجال استضافة المواقع والتسويق التابع لها وكبار المسئولين الاقتصاديين. مساهم في ProBlogger.net ، Business.com ، SocialMediaToday.com ، وأكثر من ذلك.