جهات الاتصال

متغيرات كرون إضافية. إعداد cron سهل على نظام Linux Cron كل 5 دقائق

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

كيفية إعداد كرون في الحساب الشخصي (لتعريفات يونكس)

نظرًا لأنه لا يمكن تشغيل جميع برامج PHP من خلال CLI SAPI دون تعديل مسبق ، فمن الممكن تشغيلها من خلال wget. فمثلا:

/ usr / local / bin / wget -O / dev / null -q http: //mysite.tld/cron.php؟ action = 123

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

كيفية تلقي رسائل الخطأ من البرامج التي يديرها cron

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

[email protected]

بالطبع، [email protected]يجب استبداله بعنوان بريد إلكتروني حقيقي حيث يلزم تسليم الإخطارات. إذا كنت بحاجة إلى تلقي رسائل خطأ على عناوين متعددة ، فحدد كل هذه العناوين مفصولة بفواصل.

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

لتجنب ذلك ، على سبيل المثال ، عندما لا تحتاج إلى إخراج النص بواسطة البرنامج النصي ، فأنت بحاجة إلى إضافة أحرف إلى نهاية سلسلة البرنامج النصي لـ cron

> / dev / null 2> & 1

سيبدو السطر الكامل لـ cron كما يلي:

0 1 * * * / usr / local / bin / php -q $ HOME / script.php> / dev / null 2> & 1

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

/ usr / local / bin / php -l script.php

إذا لم تكن هناك أخطاء في البرنامج النصي ، فسترى الرسالة "لم يتم اكتشاف أخطاء في بناء الجملة في script.php".

قيود

تخضع البرامج التي يتم تشغيلها عبر cron لنفس حدود الموارد مثل العمليات التي يديرها مستخدم في غلاف unix. نحن نتحدث عن القيود المفروضة على وقت تنفيذ البرنامج ، ومقدار الذاكرة المتاحة ، وقيود حجم الملف ، وما إلى ذلك.

في كثير من الأحيان ، في الأنظمة الشبيهة بنظام Linux ، قد يكون من الضروري أتمتة بعض العمليات الروتينية. لهذا ، يتم استخدام جدولة خاصة. أحد أشهرها هو Cron ، وسيتم مناقشة إعداداته في هذه المقالة.

ما هو كرون؟

اسم البرنامج مشتق من الكلمة اليونانية "chronos" التي تعني الوقت. وهو أمر منطقي بالفعل. مهمة الشيطان هي تنفيذ الأوامر المكتوبة فيه في لحظات معينة. تعتمد عملية التنفيذ نفسها على فحص جداول cron ومقارنتها بالوقت.

ملف crontab

أهم عنصر في إعداد Cron هو ملف تكوين crontab. يحتوي على أوامر التنفيذ والمسارات إلى البرامج النصية. كل منهم يعمل كمستخدم خارق. نظرًا لوجودها في الدليل /etc/cron.d ، يجب تكوين هذه الملفات هناك.

لكل مستخدم نظام فردي ملف crontab الخاص به.

تستخدم توزيعات Linux المختلفة الدلائل الخاصة بها لتخزين إعدادات المستخدم. بالنسبة لـ RedHat ، هذا هو var / التخزين المؤقت / كرون. في Debian و Ubuntu سيكون هذا var / spool / cron / crontabs. و var / spool / cron / tabs في SUSE.

قائمة الأوامر الخاصة بإدارة crontab

لدى Cron مجموعة من التوجيهات الخاصة التي يمكن استخدامها للتحكم في المجدول. تحتاج إلى استخدامها مع كرونتاب. فيما يلي قائمة مختصرة:

  • -u اسم المستخدم. يضبط المستخدم الذي سيتم استخدام مهامه وإعداداته لمزيد من الإجراءات. إذا حذفت هذا المفتاح ، فسيتم تعيين المستخدم الافتراضي.
  • -ل. يعرض قائمة المهام الحالية.
  • -e. يقوم بتشغيل محرر برنامج جدولة المهام.
  • -r. يزيل كل المهام الموجودة من القائمة.

تنسيق المهمة

كما ذكر أعلاه ، فإن إعداد Cron يتكون من إعداد الأوامر في ملف خاص. يبدو أنه سجل بسيط يتكون من ستة أعمدة:

  • الأول هو عدد الدقائق. الفاصل الزمني المتاح هو من 0 إلى 59. يمكن استخدام قيم متعددة ونطاق وأحرف خاصة ؛
  • العمود الثاني ساعات. يمكن استخدام القيم من 0 إلى 23 ؛
  • مزيد - يوم. هنا يمكنك إدخال رقم من 1 إلى 31 ؛
  • الشهر الرابع. الحد الأدنى للقيمة هو 1 ، والحد الأقصى هو 12 ؛
  • الاسبوع الخامس. 0 أو 7 يتوافق مع الأحد ؛
  • الأمر الأخير هو الذي يتم تنفيذه.

كما ذكرنا ، يمكن تحديد الأحرف الخاصة ، "*" أو "/" في الملف. على سبيل المثال ، مثل هذا الإدخال - 23 * / 2 *** صدى "تشغيل" يعني أنه سيتم عرض "تشغيل" كل ساعة و 23 دقيقة.

ميزات ملف crontab

عند إعداد Cron ، عليك أن تتذكر أنه يحتوي على خصائص محددة يجب أخذها في الاعتبار عند التكوين:

  • يجب أن ينتهي كل ملف بسطر فارغ ، وإلا فقد يتم تجاهل العنصر الأخير ، وفي بعض الأحيان الملف بأكمله ؛
  • سيتم أيضًا تجاهل الملفات الموجودة في المجلدات التي تحتوي على نقطة في اسمها من قبل المجدول ؛
  • يمكن استخدام علامات الجنيه "#" في ملفات التكوين. يتم استخدامها لتمييز الأسطر بالتعليقات. هذا مفيد جدًا لوصف المهام والأوامر المجدولة.

المتغيرات الإضافية

عند إعداد Cron ، يمكنك استخدام القيم الخاصة والاختصارات في الأوامر. على سبيل المثال ، لتحديد يوم من أيام الأسبوع ، يمكنك استخدام القائمة التالية:

  • الأحد - الأحد
  • الاثنين - الاثنين
  • الثلاثاء - الثلاثاء
  • الأربعاء - الأربعاء
  • الخميس - الخميس
  • الجمعة - الجمعة
  • السبت - السبت.

هناك أيضًا قيم أحرف منفصلة للأشهر - jan ، feb ، mar ، apr ، may ، jun ، jul ، aug ، sep ، oct ، nov ، dec.

هناك أيضًا متغيرات منفصلة لتكوين Cron يمكنها استبدال أسطر الأوامر بالكامل:

  • @اعادة التشغيل. سيتم تشغيل الأمر في كل مرة يتم فيها تشغيل الكمبيوتر ؛
  • @سنوي. سيتم تشغيل هذه المهمة مرة واحدة في السنة. يمكن أن يكون الرمز المكافئ في الشكل العددي: 0 0 1 1 *. يمكن أيضًا كتابة مرادفها كـannually ؛
  • @شهريا. كما قد تتخيل من الاسم ، يقوم هذا المتغير بتشغيل الأمر مرة واحدة في الشهر. نظيره العددي هو 0 0 1 * * ؛
  • @أسبوعي. سيتم تشغيل هذا المتغير كل أسبوع ؛
  • dayly. مرة في اليوم
  • @منتصف الليل. سيتم الإطلاق في منتصف الليل ؛
  • @ساعيا. كل ساعة.

إعداد Cron على Centos 7

لا تختلف عملية التثبيت والتكوين كثيرًا عن توزيعات Linux الأخرى المماثلة. قبل إعداد Cron على Centos ، تحتاج إلى تثبيت حزمة cronie على النظام. يمكنك القيام بذلك باستخدام الأمر yum install cronie. لإنشاء ملف مع التعليمات ، تحتاج إلى تشغيل crontab -e في المحطة. سيتم تخزين جميع إعدادات نظام Cron في / var / spool / cron / اسم المستخدم.

بعض الأمثلة المفيدة لإنشاء مهام متكررة بشكل متكرر

من الممكن تخصيص Cron بطريقة تغطي تقريبًا جميع احتياجات أي مستخدم.

  • 00 09-17 * 1-5 / المسار / للقيادة / التاج. سيقوم هذا الأمر تلقائيًا بتنفيذ الإجراء المجدول كل يوم عمل من الساعة 9 صباحًا حتى الساعة 5 مساءً كل دقيقة أولى ؛
  • 00 9.17 * * * / path / to command / cron. في هذا المثال ، يتم تنفيذ الأمر مرتين في اليوم. الأول في 9 ، والثاني - في الساعة 5. تشير العلامة "*" إلى أنه سيتم تنفيذ الأمر كل يوم وشهر وسنة ؛
  • أيضا ، لا تنس المتغيرات الرمزية. على سبيل المثال ،monthly سيشغل المهمة كل شهر في الدقيقة الأولى من الساعة الأولى من اليوم الأول. وسيتم تشغيلdaily كل يوم.

كرون (تيجان) ، كرونتاب (كرونتاب) ، مدير المهام- تم سماع هذه الأسماء من قبل كل شخص مرتبط بـ "إنشاء مواقع الويب" أكثر من مرة. إذن ما هو كرون؟ كيف تعمل معه؟ لماذا هناك حاجة إلى Cron وكيفية إعداده بشكل صحيح؟سنقوم بتحليل كل هذه الأسئلة اليوم.

أول شيء أريد ملاحظته على الفور: كرون ، كرونتاب ، مدير المهام- كل شيء متشابه ، لا تحرج من تنوع الأسماء.

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

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

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

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

على الرغم من أن الإعداد جدول المهاميحدث بنفس الطريقة في كل مكان.

نذهب إلى لوحة التحكم بالموقع ، وفي هذه الحالة تكون لوحة التحكم (هناك آخرون). يتم منحك الوصول مباشرة بعد الشراء الاستضافة، اذهب إلى الأسفل وابحث عن هذا القسم ، أدوات إضافية:

نجد في هذا القسم مدير المهاموانقر عليها. في بعض الأحيان تسمى هذه القائمة لوحة Cron. إليك كيف يتم تمييز كرون:

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

هناك خياران لإدارة Cron:

قياسي و متقدم (نمط يونكس)دعونا نلقي نظرة على كل منهم.

الخيار الأول.انقر فوق الزر قياسي ، تفتح نافذة إعداد المهمة:

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

يمكن كتابة القيم يدويًا (في الحقل الأيسر) ، أو استخدام القائمة المنسدلة (الأسهم إلى اليمين).

دعونا نرى ما كتبناه هنا. وقمنا بكتابة المهمة التالية: قم بتشغيل الأمر للتنفيذ:
/ usr / bin / php /home/freeman/domains/public_html/cron/new_day.php
كل 30 دقيقة ، كل 6 ساعات ، كل يوم من شهر يناير إذا صادف يوم الاثنين.

بعد تعيين الوظيفة ، انقر فوق الزر Add New Cron Job.

ليس من الواضح ما كتبوه؟ :) لنلقي نظرة على الخيار الثاني ، وبعد ذلك سأشرح بمزيد من التفصيل. نعود إلى الصفحة السابقة.

الخيار الثاني.نضغط على الزر متقدم (نمط يونكس)، تفتح نافذة إعداد المهمة:

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

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

ويمكنك إضافة مهمة جديدة بتكرار الإجراء بأكمله مرة أخرى. يمكنك حذف مهمة من خلال النقر على علامة الصليب بجوار المهمة على اليمين.

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

ماذا كتبنا هنا؟ قم بتشغيل الأمر في 11 دقيقة ، كل ساعة ثانية ، كل يوم ، كل شهر ، أيام 1 ، 3 ، 5 ، 7 من الأسبوع.

في مجال الاختيار: الدقائقحدد الدقيقة (أو الدقائق) التي سيتم عندها بدء المهمة في الحقل ساعةحدد الساعة (أو الساعات) التي (هـ) سيتم تنفيذ المهمة فيها ، بالإضافة إلى اليوم (الأيام) والشهر (الأشهر) ، في كل حقل يمكنك تحديد وقت معين وفترة زمنية.

على سبيل المثال ، لا يمكنك تحديد 11 دقيقة فقط ، بل 11-15 (فاصل زمني) ، مما يعني أن المهمة ستعمل كل 11 ، 12 ، 13 ، 14 ، 15 دقيقة. أو حدد دقائق محددة ، على سبيل المثال: 11 و 14 و 18 - وهذا يعني أن المهمة ستعمل في 11 و 14 و 18 دقيقة. يمكنك أيضًا استخدام العلامة * (علامة النجمة)- تعني كل منها. إذا وضعت * (علامة النجمة)في حقل الدقائق ، وبناءً عليه ، سيتم إطلاق المهمة كل دقيقة ، أي 60 مرة في الساعة.

في كل حقل ، يمكنك تحديد وقت معين وفاصل زمني ، وكذلك استخدام العلامات النجمية.

تسجيل */2 تمثل: كل ساعتين. تنطبق كل هذه الاختلافات في السجل على جميع الحقول ( الدقائقس، ساعةس، يوم, شهر, يوم الأسبوع) عند تحديد المهمة لـ Kron. أنت تدرك أنه يمكن أن يكون هناك ملايين الخيارات ، قم بتشغيل المهمة للتنفيذ ، على الأقل كل دقيقة على مدار السنة. بالطبع ، لا تظهر مثل هذه الحاجة أبدًا ، ولكن من الناحية النظرية توجد مثل هذه الاحتمالية.

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

الآن دعونا نرى كيف يتم ملء الحقل أمر للتشغيل(في المتغير الأول) أو الفريق (في المتغير الثاني).

تم تعيين المهمة على النحو التالي.

بادئ ذي بدء ، حدد المسار إلى PHP على الخادم الخاص بك ، وعلى خادمي المسار هو / usr / bin / php ، قد يكون لديك مسار مختلف ، تحقق مع مسؤولي الخادم ، بعد المسار إلى PHP ضع مسافة واكتب المسار الداخلي الكامل للملف الذي يجب على Cron تشغيله. لنفترض أنني بحاجة إلى Cron لتشغيل ملف mail.php ، مع معرفة المسار الداخلي للملف ، أكتب ما يلي:

public_html / cron / mail.php

أولئك. في المجلد الجذر public_html ، يوجد مجلد cron يوجد به ملف mail.php ، وسيبدو الأمر الكامل لتشغيل ملف mail.php كما يلي:

/ usr / bin / php /public_html/cron/mail.php

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

Original: استخدام cron Scheduler على أنظمة Linux
المؤلف: Rares Aioanei
تاريخ النشر: 29 سبتمبر 2011
ترجمة: A. Krivoshey
تاريخ التحويل: نوفمبر 2011

1 المقدمة

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

2. تثبيت كرون

تستخدم معظم التوزيعات Vixie Cron وبعض المشتقات الأخرى كتطبيق افتراضي لـ cron ، وهذه هي التوزيعات التي سنغطيها في هذه المقالة. بالإضافة إلى ذلك ، تم تثبيت cron مسبقًا بالفعل في جميع التوزيعات تقريبًا ، نظرًا لأنه جزء مهم جدًا من نظام Linux. على الرغم من أن المستخدم العادي عادة لا يعمل معه بشكل مباشر ، إلا أن النظام والعديد من التطبيقات تستخدم cron (مثال جيد هو التحديث الدوري لقاعدة بيانات صفحة الدليل). الاستثناء الملحوظ هو Gentoo ، حيث يتعين عليك تثبيت vixie-cron يدويًا وإضافته إلى مستوى التشغيل الافتراضي. يتم تثبيت كرون افتراضيًا على Arch و Debian و Slackware و Ubuntu و Fedora و OpenSUSE ويبدأ تلقائيًا عند بدء تشغيل النظام. نأمل أن تدرس صفحات man لـ cron و crontab ، حيث تستخدم العديد من التوزيعات نسخًا مصححة منها ، والتي يتم إجراؤها لدمج البرنامج بشكل أفضل لتوزيع معين. لذلك ، هناك احتمال ألا تكون الميزة المتوفرة على سبيل المثال في Gentoo متاحة في Slackware. على أي حال ، لا يوجد شيء أفضل من قراءة صفحات الرجل ، خاصة إذا كنت تتعامل مع برنامج جديد ستستخدمه كثيرًا.

3. استخدام كرون

أولاً ، نحتاج إلى التأكد من تشغيل cron:

$ ps faux | جريب كرون

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

الجذر 1424 0.0 0.0 22000884؟ Ss 13:56 0:00 / usr / sbin / cron

الآن دعونا نجعل كرون يعمل. نحتاج أولاً إلى التفكير في الأمر الذي سنستخدمه. هل يتطلب امتيازات الجذر؟ لنفترض أننا نستخدم crontab لإضافة نص برمجي بسيط للتشغيل كل خمس دقائق كمستخدم بسيط.

3.1. كرونتاب

3.1.1. مثال

لنكتب نصًا بسيطًا يعرض مربع حوار عادي قائم على الشتائم في المحطة (يتطلب مربع حوار وأي محاكي طرفي - نستخدم xterm):

#! / bin / sh xterm -e "Dial -msgbox" Testing cron ... "234 234" # هذا مثال بسيط للغاية ، تعامل معه كما هو

دعنا نسمي الملف crontest.sh ونجعله قابلاً للتنفيذ ، نظرًا لأن كل ما يتم تشغيله باستخدام cron يجب أن يكون قابلاً للتنفيذ:

$ chmod + x crontest.sh

نحتاج الآن إلى تعديل جدول crontab الخاص بالمستخدم لإضافة إدخال للبرنامج النصي الرائع الخاص بنا:

تم تعيين E للتحرير ، -r للحذف. كن حذرا جدا! قام العديد من مسؤولي النظام بإدخال -r بدلاً من -e عن غير قصد ، خاصة وأن هذه المفاتيح تقع في مكان قريب ، وحذفوا جميع الإدخالات من crontab. على أي حال ، سترى على الأرجح ملفًا تم التعليق عليه بالكامل (يستخدم crontab # للإشارة إلى التعليقات) ، والذي يعطي أمثلة ويصف الغرض من حقول التسجيل. نعم ، يتكون السجل من حقول يحدد آخرها الأمر المطلوب تنفيذه ، والباقي عبارة عن خصائص توقيت. لذا فإن إدخال crontab الخاص بنا للنص الذي يتم تشغيله كل خمس دقائق يبدو كالتالي:

$ * / 5 * * * * تصدير DISPLAY =: 0 && /home/$user/crontest.sh

نحتاج إلى تصدير متغير DISPLAY حتى لا تتسبب xterm في ظهور أخطاء "DISPLAY is not set". الآن دعونا نرى الغرض من كل حقل.

3.1.2. حقول كرونتاب

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

5 * * * * عرض عرض التصدير =: 0 && / home/$user/crontest.sh

نحثك على توخي الحذر في حقل يوم الأسبوع: قد يكون اليوم الأول من الأسبوع في بلدك هو يوم الاثنين ، ولكن في البلدان الأخرى قد يكون يوم الأحد. إذا كنت تعمل في بيئة متعددة الثقافات والجنسيات ، فيجب أن تكون على دراية بالخصائص الثقافية والدينية. يرسل Cron إشعارات إلى المستخدم الذي يمتلك الإدخال إلى عنوان بريده الإلكتروني الافتراضي ( [بريد إلكتروني محمي]اسم المضيف). إذا كنت تريد تغيير عنوان بريدك الإلكتروني ، فما عليك سوى إضافة "MAILTO = $ email_address" إلى crontab. إذا كنت ترغب في تعطيل هذه الميزة ، أضف "> / dev / null 2> & 1" في نهاية الإدخال.
الآن ، إذا كنت قد سئمت بالفعل من النافذة المنبثقة كل خمس دقائق ، فقم بتشغيل crontab -e مرة أخرى لحذف الإدخال أو ، أسهل ، قم بالتعليق على الإدخال. لعرض محتويات crontab ، ما عليك سوى استخدام الخيار -l (list).

3.2 النظر في / etc /

3.2.1. نصوص cron

في الأقسام السابقة ، قمنا بحل مشاكل بسيطة وتافهة ، فقط للإحماء ، والآن سننتقل إلى الأمور الجادة. يشير عنوان هذا القسم إلى الدلائل في / إلخ المسؤولة عن مهام الصيانة الدورية للنظام. على سبيل المثال ، في الدليل /etc/cron.weekly ، يوجد نص برمجي man-db يقوم بتحديث قاعدة بيانات صفحة الدليل. يتم تضمين كل هذه البرامج النصية في التوزيع وتشغيلها وفقًا لملف / etc / crontab. لذلك ، إذا كنت تريد فهم عملهم ، فمن الأفضل دراسة محتويات هذا الملف. سترى إدخالات مشابهة لتلك التي قدمناها سابقًا ، لكن الأوامر المنفذة ستكون مختلفة. "run-parts" هي أداة مساعدة صغيرة مصممة لتشغيل جميع البرامج النصية في دليل معين.
قد يلاحظ القارئ اليقظ أن هناك حقلًا واحدًا في / etc / crontab لم نراه عند تحرير crontab - هذا هو حقل "user". يتم ذلك لأسباب أمنية. إذا أدخلت الأمر crontab -e كمستخدم $ ، فهذا يعني أن أي أمر يتم تشغيله كمستخدم $. ولكن نظرًا لأن / etc / crontab على مستوى النظام ، فمن الضروري تعيين المستخدم صراحةً ، حيث قد يكون من الضروري تشغيل نصوص أو برامج معينة كمستخدم مختلف عن الجذر ، خاصةً إذا كان مسؤول النظام واعيًا بالأمان ويضيف مستخدمين والمجموعات للنظام حسب الحاجة. مثال: النسخ الاحتياطي لا يحتاج إلى جميع امتيازات الجذر ، فقط أذونات القراءة والكتابة إلى أدلة معينة ، لذلك يقوم المسؤول بإنشاء مجموعة نسخ احتياطي ومستخدم احتياطي مع الحقوق اللازمة ويقوم بتشغيل البرامج النصية للنسخ الاحتياطي ليلاً باستخدام الكتابة:

30 23 * * * backupadmin /home/backupadmin/nightlybkup.sh

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

30 23 * * 1-5 backupadmin / home/backupadmin/nightlybkup.sh

إذا كنت تريد تشغيل النسخ الاحتياطي في أيام الاثنين والأربعاء والجمعة فقط ، فاستبدل "1-5" بـ "1،3،5". بمجرد أن تعرف بالضبط ما تحتاجه ، يصبح cron واضحًا وسهل الاستخدام.

4. تأملات في الأمن

هناك العديد من المواقف التي لا تريد فيها أن يتمكن المستخدم الذي لديه حق الوصول إلى نظامك من إنشاء إدخالات crontab. هنا يأتي دور /etc/cron.deny و /etc/cron.allow. استخدامهم مشابه لـ /etc/hosts.allow و / etc / hosts / deny ، لذلك إذا كنت قد عملت مع هذه الملفات من قبل ، فستشعر وكأنك في المنزل. هذان الملفان (cron.deny و cron.allow) ليسا على النظام افتراضيًا ، على الأقل على النظام الذي نعمل عليه ، لذلك يُسمح للجميع افتراضيًا بإنشاء إدخالات crontab. يمكنك التحقق من الملفات ذات الصلة بـ cron الموجودة في الدليل / etc الخاص بك باستخدام الأمر:

ليرة سورية / إلخ | جريب كرون

ومرة أخرى ، نذكرك أن كل ما سبق ينطبق على Linux ، نظرًا لأن عدم وجود هذه الملفات على Solaris يعني العكس تمامًا ، بالإضافة إلى أن الملفات موجودة في أماكن أخرى. يتم التحقق من cron.allow أولاً ، لذلك نقوم عادةً بإدخال "ALL" في cron.deny ثم نضيف المستخدمين الذين نريد منحهم حق الوصول في cron.allow.

5. أمثلة على استخدام cron

كل دقيقة:

* * * * * /usr/local/bin/check-disk-space.sh

سيتم تنفيذ الأمر كل دقيقة ويوم وشهر.

بالأيام:

30 02 10 01،06،12 * /home/$user/bin/checkdrive.sh

سيقوم هذا الأمر بتشغيل البرنامج النصي checkdrive.sh في الساعة 02:30 من كل 10 يناير ويونيو وديسمبر.

كل نصف ساعة:

00.30 * * * * /home/$user/backupdata.sh

فقط في عطلات نهاية الأسبوع:

* * * * 6.7 / البيرة / بن / نهاية الأسبوع

مرتين فى اليوم:

20 11.16 * * * / usr / sbin / command

سيتم تنفيذ الأمر كل يوم في الساعة 11:20 و 16:20.

كل ساعة في يوم معين:

01 * 2 05 * / sbin / system_command

كل 10 دقائق خلال خمسة أيام عمل (الاثنين - الجمعة):

* / 10 * * 1-5 /usr/local/bin/check-disk-space.sh

فقط خلال ساعات العمل:

00 09-17 * * 1-5 /usr/local/bin/check-disk-space.sh

سيتم تنفيذ هذا الأمر مرة واحدة يوميًا من الساعة 9 صباحًا حتى الساعة 5 مساءً.

0 0 1 1 * /usr/local/bin/check-disk-space.sh

مرتان في السنة عند الساعة 12:00 والساعة 24:00

0 0.12 1 * / 6 * /usr/local/bin/check-disk-space.sh

سيتم تنفيذ هذا الأمر مرتين في السنة (كل 6 أشهر) الساعة 12:00 والساعة 24:00.

كل ثالث خميس من أي شهر في الساعة 10:00 صباحًا:

0 10 15-21 * 4 /usr/local/bin/check-disk-space.sh

كل يوم 20 دقيقة بعد كل ساعة:

20 0-23 / 2 * * * /usr/local/bin/check-disk-space.sh

سيتم تنفيذ هذا الأمر كل يوم بعد 20 دقيقة من كل ساعة زوجية (0:20 ، 2:20 ... 22:20).

6. الخلاصة

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

إذا أعجبك هذا المقال ، فيرجى مشاركته مع أصدقائك:

, | |

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

تركيب كرون

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

أوبونتو / ديبيان:

sudo apt-get update
sudo apt-get install cron

CentOS / Red Hat Linux:

تحديث sudo yum
sudo yum تثبيت vixie-cron crontabs

بمجرد اكتمال التثبيت ، تأكد من تشغيل cron في الخلفية:

sudo / sbin / chkconfig crond على
بدء sudo / sbin / خدمة crond

النحو الأساسي

ضع في اعتبارك المثال التالي للمهمة التي تريد جدولتها للتشغيل:

5 * * * * curl http://www.google.com

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

<Минуты> <Часы> <Дни_месяца> <Месяцы> <Дни_недели>

أمثلة كرون

يحتوي هذا القسم على أمثلة لجدولة المهام الأكثر شيوعًا.

لتشغيل الأمر تلقائيًا كل دقيقة:

لتشغيل الأمر كل اثنتي عشرة دقيقة من الساعة (08.12 ، 09.12 ، إلخ):

لجعل الأمر يعمل كل 15 دقيقة:

0,15,30,45 * * * *

لتنفيذ الأمر تلقائيًا كل يوم في الساعة 4 صباحًا:

لتشغيل الأمر كل ثلاثاء الساعة 4 صباحًا:

يمكن تقسيم الجدول الزمني. أي أنه بدلاً من 0،15،30،45 يمكنك استخدام:

انتبه إلى النطاق 2-6. سيعمل بناء الجملة هذا على تشغيل الأمر المحدد من 2:00 صباحًا إلى 6:00 صباحًا كل 15 دقيقة.

كما ترى ، تسمح لك بنية cron القوية والمرنة للغاية بتحديد أي فترة زمنية تقريبًا.

إعداد كرون

بمجرد وضع جدول المهام ، ستحتاج إلى وضعه في المكان الصحيح على النظام حتى يتمكن البرنامج الخفي من العثور عليه وقراءته. بشكل عام ، هناك العديد من هذه النقاط في النظام ، ولكن كقاعدة عامة ، يتم وضع مثل هذا الجدول في crontab للمستخدم. كما ذكرنا سابقًا ، يعد crontab ملف تكوين cron daemon يحتوي على جدول زمني لتشغيل أوامر وبرامج معينة. يوجد هذا الملف في / var / spool / cron / crontab ، لكن ليس من المعتاد تحريره مباشرة. لإضافة البرامج الضرورية إلى الملف ، استخدم الأمر crontab الذي يحمل نفس الاسم. أي لتحرير ملف crontab ، يمكنك ببساطة كتابة:

سيفتح هذا الأمر محرر نصوص يمكنك من خلاله إجراء جميع التغييرات اللازمة ؛ يجب إدخال كل مهمة جديدة في سطر جديد.

لعرض crontab دون إجراء أي تغييرات ، استخدم الأمر:

يمكنك مسح crontab بالأمر التالي:

يمكن للمستخدم الذي تمت ترقيته تعديل crontab للمستخدمين الآخرين باستخدام:

crontab -u<пользователь>-e

إخراج كرون

بعد اكتمال مهمة cron ، تُرسل الإخراج إلى عنوان البريد الإلكتروني للمستخدم (ما لم تكن هناك حاجة لإرسال الإخراج إلى السجل أو / dev / null). يمكن تحديد عنوان البريد الإلكتروني يدويًا عن طريق إضافة معلمة MAILTO إلى الجزء العلوي من crontab. يمكنك أيضًا تحديد shell المطلوب تشغيله ، والمسار إلى ملف cron الثنائي ، والدليل الرئيسي. لهذا:

أول فتح crontab:

ثم قم بتحريره على هذا النحو:

شل = / بن / باش
المنزل = /
MAILTO = " [بريد إلكتروني محمي] _user.com "
# هذا تعليق
* * * * * صدى "قم بتشغيل هذا الأمر كل دقيقة"

سيعيد هذا السطر تشغيل هذا الأمر كل دقيقة. سيرسل عفريت cron هذا الإخراج إلى البريد [بريد إلكتروني محمي] _user.com. هذا ، بالطبع ، ليس مريحًا للغاية. كما ذكرنا سابقًا ، يمكن إرسال هذا الإخراج إلى ملف سجل لتجنب مثل هذه المواقف.

للقيام بذلك ، ما عليك سوى إضافة:

* * * * * echo "قم بتشغيل هذا الأمر كل دقيقة" >> file.log

ملاحظة: سوف تقوم الرموز >> بتوجيه الإخراج إلى السجل. بالإضافة إلى التسجيل ، يمكنك أيضًا استخدام / dev / null مع برنامج PHP النصي التالي الذي يعمل في الخلفية.

* * * * * / usr / bin / php /var/www/domain.com/backup.php> / dev / null 2> & 1

تقييد الوصول إلى cron

لتقييد الوصول إلى عفريت cron ، تحتاج إلى استخدام ملفات /etc/cron.allow و /etc/cron.deny. للسماح (السماح) أو رفض (رفض) الوصول إلى مستخدم معين ، ما عليك سوى إدخال اسم المستخدم في الملف المناسب. افتراضيًا ، يكون عفريت cron متاحًا لجميع المستخدمين. لرفض الوصول إلى جميع المستخدمين ومنح الوصول فقط إلى مثال المستخدم ، تحتاج إلى استخدام التسلسل التالي من الأوامر.



أحب المقال؟ أنشرها