أمثلة على التيجان. إعداد كرون سهل على نظام Linux

24.06.2019

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

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

في الواقع، Cron هي خدمة، مثل معظم خدمات Linux الأخرى، تبدأ عند بدء تشغيل النظام وتعمل في الخلفية. وتتمثل مهمتها الرئيسية في تنفيذ العمليات الصحيحة في الوقت المناسب. هناك العديد من ملفات التكوين التي تأخذ منها معلومات حول ما يجب القيام به ومتى. تفتح الخدمة الملف /etc/crontab الذي يحتوي على كافة البيانات الضرورية. في كثير من الأحيان، في التوزيعات الحديثة، يتم وصف تشغيل الأداة المساعدة Run-Parts، والتي تقوم بتشغيل البرامج النصية اللازمة من المجلدات التالية:

  • /etc/cron.دقيقة- كل دقيقة؛
  • /etc/cron.hourly- كل ساعة؛
  • /etc/cron.daily- كل يوم؛
  • /etc/cron.weekly- كل اسبوع؛
  • /etc/cron.monthly- كل شهر.

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

يسمح لك بتنفيذها حتى لو كان الكمبيوتر لا يعمل دائمًا ويتم إيقاف تشغيله من وقت لآخر. يتم تسجيل تاريخ آخر تنفيذ للمهمة في الملف /var/spool/anacron، وبعد ذلك، في المرة التالية التي يتم فيها تشغيلها، يتحقق anacron لمعرفة ما إذا كانت العملية المطلوبة قيد التشغيل في الوقت المناسب، وإذا لم يكن الأمر كذلك، فإنها تبدأ هو - هي. تم تصميم خدمة cron نفسها بشكل أكبر لأداء المهام خلال النهار أو في وقت وتاريخ محددين بدقة.

إعداد كرون

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

يُنصح دائمًا بتنفيذ ذلك باستخدام الخيار -e، ثم سيتم استخدام محرر النصوص الافتراضي لتحرير القواعد. يفتح لك الأمر ملفًا مؤقتًا يحتوي بالفعل على جميع قواعد cron الحالية ويمكنك إضافة قواعد جديدة. بعد اكتمال الأمر cron، ستتم معالجة الملف وإضافة جميع القواعد إلى /var/spool/cron/crontabs/username، وسيتم إطلاق العمليات المضافة بالضبط من المستخدم الذي أضفتها منه.

لذلك، عليك توخي الحذر هنا، وإذا كنت بحاجة إلى تنفيذ البرامج النصية كجذر، فيجب تنفيذ crontab كجذر، وليس كمستخدم. وهذا غالبا ما يسبب مشاكل.

بناء جملة كرونتاب

كما قلت من قبل، يتم تعيين الوقت في بناء جملة خاص، دعونا نلقي نظرة على بناء الجملة لإعداد مهمة cron واحدة:

دقيقة ساعة يوم شهر day_week /المسار/إلى/قابل للتنفيذ/ملف

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

أمثلة على إعدادات كرون

أولاً، يمكنك عرض مهام cron للمستخدم المتميز، ولهذا يمكنك استخدام الخيار -l :

يمكنك حذف جميع المهام الموجودة باستخدام الأمر -r:

لنفترض أننا بحاجة إلى تشغيل البرنامج النصي الخاص بنا على /usr/local/bin/serve كمستخدم متميز. نوع من البرامج النصية للصيانة. أبسط مثال هو تشغيله كل دقيقة:

* * * * * /usr/local/bin/serve

0 * * * * /usr/local/bin/serve

ننطلق عند الدقيقة صفر من ساعة الصفر كل يوم وهذا الساعة 12 ليلاً:

0 0 * * * /usr/local/bin/serve

0 0 1 * * /usr/local/bin/serve

يمكنك القيام بذلك في أي يوم، على سبيل المثال، اليوم الخامس عشر:

0 0 15 * * /usr/local/bin/serve

في اليوم الأول من الأسبوع من الشهر الأول من العام، 0 ساعة و 0 دقيقة:

0 0 * 1 0 /usr/local/bin/serve

أو في يوم الصفر من الأسبوع من كل شهر:

0 0 * * 0 /usr/local/bin/serve

يمكنك تحديد أي دقيقة وساعة ويوم من أيام الأسبوع، على سبيل المثال الساعة 15.30 يوم الثلاثاء:

30 15 * * 2 /usr/local/bin/serve

يعتبر يوم الاثنين هو اليوم الأول، والأحد هو اليوم السابع أو اليوم صفر. يمكنك أيضًا كتابة اسم مختصر ليوم من أيام الأسبوع، مثلاً الشمس - الأحد:

30 15 * * sun /usr/local/bin/serve

للإشارة إلى فاصل زمني محدد، تحتاج إلى استخدام الرمز "-"، على سبيل المثال، كل ساعة، من السابعة صباحا إلى السابعة مساءا:

0 7-19 * * * /usr/local/bin/serve

إذا كنت بحاجة إلى تشغيل أمر عدة مرات، فيمكنك استخدام الفاصل "". على سبيل المثال، لنقم بتشغيل البرنامج النصي في الساعة 5 و35 دقيقة بعد الخامسة (16:05 و16:35)، كل يوم:

5.35 16 * * * /usr/local/bin/serve

قد لا ترغب في تحديد الوقت بشكل منفصل، ولكن ما عليك سوى تحديد الفاصل الزمني الذي تريد تشغيل البرنامج النصي فيه، مثل مرة واحدة كل 10 دقائق. للقيام بذلك، استخدم محدد الشرطة المائلة - "/":

*/10 * * * * /usr/local/bin/serve

بالإضافة إلى ذلك، تم اختراع متغيرات لبعض المجموعات شائعة الاستخدام، وهي كما يلي:

  • @اعادة التشغيل- عند التحميل مرة واحدة فقط؛
  • @سنويًا، @سنويًا- مرة كل سنة؛
  • @شهريا- مرة في الشهر؛
  • @أسبوعي- مرة في الأسبوع؛
  • @يوميًا، @منتصف الليل- كل يوم؛
  • @ساعيا- كل ساعة.

على سبيل المثال، هذا هو الشكل الذي سيبدو عليه أمر تشغيل البرنامج النصي مرة كل ساعة:

@hourly /usr/local/bin/serve

إذا كنت ستضيف برنامجًا نصيًا إلى أحد المجلدات، فكما قلت سابقًا، يجب أن يكون اسمه بدون نقاط وأن يكون له حقوق التنفيذ:

Sudo vi /etc/corn.daily/basckup

يجب أن يبدو البرنامج النصي مثل هذا. الآن أنت تعرف كيفية إعداد cron، كل ما تبقى هو التحقق من كيفية عمل كل شيء.

أعمال التصحيح

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

يجب أن يتم تنفيذه في الساعة 19.40 كل يوم، والآن انظر إلى السجل:

grep CRON /var/log/syslog

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

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

مسارات تشغيل سودو /etc/cron.daily/

الاستنتاجات

في هذه المقالة، نظرنا في كيفية تكوين cron لجدولة المهام التلقائية بسهولة. آمل أن تكون هذه المعلومات مفيدة لك.

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

وظائف كرون وتشغيل البرنامج النصي PHP

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

`/usr/bin/what php` /home/l/login/public_html/script.php

في هذه الحالة: `/usr/bin/what php` هو المسار المطلق لمترجم PHP، و/home/l/login/public_html/script.php هو المسار المطلق لبرنامج PHP النصي. من الجدير بالذكر أن المسار إلى المترجم الفوري والبرامج النصية قد يختلف بالنسبة لك، لأنها تعتمد على إعدادات خادم الويب.

إعداد Cron عبر PU

يقدم معظم موفري الاستضافة للعملاء خدمات خاصة لوحة التحكماستضافة (PU)، مما يجعل من السهل تكوين مدخلات Cron والعمل معها. هذا هو ما يبدو عليه تشغيل البرنامج النصي php cron_admitad.php في المجدول على SpaceWeb.

يرجى ملاحظة أن المسار إلى المترجم غير محدد هنا (المزيد عن هذا لاحقًا). ومن الجدير بالذكر أيضًا استخدام الرمز " تيلدا"(~) كاسم مستعار" الدليل الرئيسي» (مع الأخذ بعين الاعتبار المثال الموضح: /home/l/login). لتبسيط الأمر، هذا هو الدليل الذي، في الظروف العادية، يمكنك الوصول إليه في البداية عبر FTP.

المسار إلى المترجم في البرنامج النصي PHP

معظم المشاكل لها حلول متعددة. غالبًا ما يكون من الصعب تحديد أيهما هو الأمثل، ولكن ليس هذا هو الهدف.

رمز " بنية"(#) هو تعليق في PHP، لكن التسلسل #! (إنجليزي) خط الانفجار, تجزئة الدويأو كوخ) له معنى خاص - فهو يحدد المسار إلى مترجم البرنامج النصي.

الحقيقة هي أنه في أنظمة التشغيل المشابهة لـ UNIX، يمكن إنشاء البرامج النصية بلغات مختلفة: PHP، وPerl، وPython، وما إلى ذلك. عندما يتم تنفيذ البرنامج النصي بواسطة خادم ويب، فإنه يعتمد على امتداد الملف (على سبيل المثال: .php، .phtm، phtml، وما إلى ذلك هي امتدادات شائعة لمترجم PHP). أنظمة التشغيل المشابهة لـ UNIX، كقاعدة عامة، لا تركز على امتداد الملف - غالبًا ما لا يحتوي الملف على امتداد. يقرأ النظام السطر الأول ويبحث عن معالج البرنامج النصي.

في نص PHP المذكور سابقًا، السطر الأول الذي أستخدمه هو:

#!/usr/local/bin/php

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

يتم تشغيل المسارات إلى الملفات الموجودة في البرنامج النصي عبر Cron

فارق بسيط آخر مهم. إذا كان البرنامج النصي الخاص بك يستخدم وظائف require() و include() و fopen() وما إلى ذلك التي تتضمن الوصول إلى ملفات الطرف الثالث على خادم الويب، فستحتاج إلى تحديد مسار مطلق، على سبيل المثال:

/home/s/shop4mru/public_html/content/data/coupons.db

مرة أخرى، قد يختلف المسار إلى ملف Coupons.db عن المسار المحدد في المثال، حيث أن كل ذلك يعتمد على إعدادات خادم الويب.

بشكل عام، يمكنك أيضًا استخدام مسار نسبي. للقيام بذلك، استخدم وظيفة PHP chdir()، والتي تغير دليل PHP الحالي إلى الدليل المحدد كمعلمة خاصة به.

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

Chdir("public_html"); // التغيير إلى الدليل: /home/s/shop4mru/public_html

وبالتالي، مع الأخذ في الاعتبار المثال المذكور، سيتم الوصول إلى الملف عبر مسار نسبي:

./content/data/coupons.db

النقطة في البداية تعني الدليل الحالي المعدل.

دعونا نلخص إعداد Cron

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

في الساعة 8:00 تحرير الرسالة 9 تعليقات

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

تكوين برنامج جدولة المهام Cron بشكل صحيح

يمكن وصف وظائف Cron على النحو التالي - هذه عدة أسطر (سطر واحد - مهمة واحدة) تشير إلى تكرار الإطلاق والأمر (مما يعني ما يجب تشغيله فعليًا):

30 3 * * 2 /yourdirectory/myscript.pl

تخطيطيا:

الدقائق والساعات DayMonth الشهر DayWeek الأمر

دقائق- تم تعيينه برقم من 0 إلى 59

يشاهد- محدد برقم من 0 إلى 23

يوم من الشهر- محدد برقم من 1 إلى 31

شهر- محدد برقم من 1 إلى 12

يوم الأسبوع- 1 - الإثنين، 2 - الثلاثاء، 3 - الأربعاء، 4 - الخميس، 5 - الجمعة، 6 - السبت، 7 - الأحد

وبالتالي، في مثالنا (30 3 * * 2 /yourdirectory/myscript.pl) تعني العودة أنك بحاجة إلى تشغيل الملف /yourdirectory/myscript.pl كل يوم ثلاثاء الساعة 3:30 صباحًا

أيضًا في كل مجال يمكننا استخدام:

الكتابة مفصولة بفواصل: 2،5،16 - إذا كتبت هذا في حقل الساعات، فسيتم تشغيل المهمة في الساعة 2 صباحًا و5 صباحًا و4 مساءً.

فاصلة: 5-9 - إذا كتبت ذلك في حقل الدقائق، فسيتم تشغيل المهمة كل دقيقة في الفترة من 5 إلى 9 دقائق.

تردد إضافي: /4 - إذا كتبت هذا في خانة الساعات فهذا يعني أن الإطلاق سيتم كل 4 ساعات.

مهم! النجمة (*) تعني جميع القيم الممكنة! وبالتالي، فإن مشرف الموقع عديم الخبرة الذي يقرر أنه يكفي كتابة * * 1 * * /yourdirectory/myscript.pl لتشغيل مهمة في اليوم الأول من كل شهر، يتعثر في حقيقة أنه سيتم إطلاق المهمة كل دقيقة، كل ساعة.

كيف وأين تدخل وظائف كرون؟

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

لوحة التحكم: لوحة التحكم -> وظائف كرون

مدير مزود خدمة الإنترنت: لوحة التحكم -> المجدول (Cron)

Parallels Plesk: لوحة التحكم -> المهام المجدولة

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

للبدء، أدخل الأمر

بعد ذلك، من المرجح أن يتم نقلك إلى محرر النصوص vi (قد يكون لدى مقدمي الخدمات المختلفين محررين مختلفين). vi هو محرر معقد إلى حد ما، لذا نوصي بمحاولة إدخال السطر

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

إدخال النص- اضغط على المفتاح i وسيتحول المحرر إلى وضع إدخال النص؛

الخروج من وضع إدخال النص- خروج

حذف الحرف- x (إذا كنت في وضع الإدخال الاختباري، لحذف حرف، اضغط أولاً على Esc ثم x)؛

مهم!عند إدخال المهام لـ Cron، يجب عليك الضغط على Enter بعد كل سطر، حتى لو كان هذا هو السطر الوحيد.

لعرض وظائف Cron الموجودة، أدخل crontab -l

وظائف كرون مع أمثلة مفيدة

راجع قواعد إنشاء وظائف Cron. تشغيل مهمة كل ساعتين في 0 دقيقة (كل يوم، كل شهر)

0 */2 * * * /yourdirectory/myscript.pl

قم بتشغيل المهمة في كل مرة بعد إعادة تشغيل الخادم

@reboot/yourdirectory/myscript.pl

قم بتشغيل المهمة يوم الأربعاء الساعة 3:20 صباحًا (كل يوم، كل شهر)

20 3 * * 3 /yourdirectory/myscript.pl
1 0 14 3 * /yourdirectory/myscript.pl

قم بتشغيل المهمة شهريًا في اليوم الأول الساعة 3:15 صباحًا (كل شهر)

15 3 1 * * /yourdirectory/myscript.pl

قم بتشغيل ملفات PHP وفقًا لجدول زمني باستخدام Cron

لتشغيل نصوص PHP عبر Cron، يمكنك استخدام مترجم خاص. لسوء الحظ، لا يمكننا أن نقدم لك تعليمات حول كيفية استخدامه، لأن... قد يستخدم مقدمو الخدمة المختلفون برامج مختلفة. لذلك، يقوم العديد من مشرفي المواقع بتشغيل ملفات PHP باستخدام WGET، ولهذا نستخدم إدخال crontab التالي:

30 3 * * 2 جذر wget -O - -q -t 1 http://mysite.com/file.php

"-O -" تعني أن Cron لن يقوم بإنشاء ملفات غير ضرورية، ولكنه سيعمل من خلال وحدة التحكم. هذا يسمح لك بتجنب ازدحام الخادم.

"-q" يعطل طباعة العملية على الشاشة

يسمح "-t 1" بمحاولة اتصال واحدة فقط.

http://mysite.com/file.php - المسار إلى ملف PHP الخاص بك (ليس من الضروري تحديد مسار مطلق).

مهم! إذا قمت بتمرير المعلمات باستخدام ملف PHP هذا، فهناك أوقات لا يقوم فيها WGET بمعالجتها بشكل صحيح تمامًا. في هذه الحالة، نوصي بإدراج عنوان ملف PHP بين علامتي اقتباس مفردتين:

30 3 * * 2 جذر wget -O - -q -t 1 "http://mysite.com/file.php"

هناك أيضًا طريقة أخرى للبدء:

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php

ولكن في هذه الحالة، تحتاج إلى معرفة المسار إلى مجلد wget على الخادم الخاص بك (في أغلب الأحيان /usr/bin/wget أو /usr/local/bin/wget).

احصل على تقرير عمل Cron عبر البريد الإلكتروني

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

أين [البريد الإلكتروني محمي]- هذا هو البريد الإلكتروني الذي سيتم إرسال الرسائل إليه. يمكنك أيضًا إضافة عناوين متعددة، مفصولة بفواصل.

هناك شيء آخر: ستتلقى أيضًا نتيجة البرنامج النصي عبر البريد الإلكتروني. على سبيل المثال، إذا كتب البرنامج النصي نوعًا من النقش على الشاشة، فسيتم إرسال نفس النقش إلى بريدك الإلكتروني مع التقرير. إذا كان هذا يزعجك، أضف السطر > /dev/null 2>&1 في نهاية المهمة

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php > /dev/null 2>&1

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

في Ubuntu Server، يتم استخدامه كبرنامج جدولة المهام كرون- جدولة مع واجهة سطر الأوامر. إنه جزء مهم من النظام ويبدأ العمل مباشرة بعد التثبيت، ويؤدي مهام النظام المختلفة. هدفنا أن نضعه في خدمتنا، خاصة أنه ليس بالصعوبة التي يبدو عليها.

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

لإنشاء جدول مخصص أو تغييره، أدخل الأمر:

كرونتاب -e

عند تشغيله لأول مرة، ستطالبك الأداة بتحديد محرر، ونحن نوصي بالاختيار com.mcedit(يتطلب تثبيت MC)، أو محرر آخر تعرف كيفية العمل معه.

تنسيق بنود الجدول هو:

دقيقة ساعة يوم شهر day_of_week أمر

  • دقيقة- الوقت بالدقائق من 0 إلى 59
  • ساعة- من 0 إلى 23
  • يوم- يوم الشهر من 1 إلى 31
  • شهر- من 1 إلى 12 أو تسميات الحروف يناير - ديسمبر
  • يوم من أيام الأسبوع- من 0 إلى 6 (0 - الأحد) أو السبت - الشمس
  • فريق- سلسلة بتنسيق مترجم الأوامر الذي سيتم تنفيذه، وكتابته مثل الفريق 1 && الفريق 2لتشغيل عدة أوامر على التوالي.

ويمكن تحديد قيم الدقائق والساعات والأيام على النحو التالي:

  • معنى- رقم يشير إلى التاريخ أو الوقت، مسموح باستخدام أحرف البدل * السماح لمجموعة كاملة من القيم
  • قيم متعددة- يسمح بتحديد عدة قيم مفصولة بفواصل، على سبيل المثال 2،14،22
  • مدى من القيم- يُشار إليه بواصلة، على سبيل المثال 2-10
  • خطوة القيمة- يُشار إليه من خلال كسر مقامه خطوة، على سبيل المثال */3 - كل قيمة ثالثة هي 0، 3، 6، 9، إلخ. يجب أن يكون البسط عبارة عن نطاق من القيم أو علامة النجمة.

خذ بعين الاعتبار إدخال المثال التالي:

0 8-19/2* *1 /home/ivanov/test

وهذا يعني أنه كل ساعتين من 8 إلى 19 (8، 10،12،14،16) يوم الاثنين، قم بتشغيل البرنامج النصي للاختبار في الدليل الرئيسي لإيفانوف.

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

* 10-15 * * * /home/ivanov/test

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

0 10-15 * * * /home/ivanov/test

سيسمح هذا الإدخال بتشغيل البرنامج النصي في بداية كل ساعة من النطاق المحدد.

بالإضافة إلى التاريخ، يمكنك استخدام عدد من السلاسل الخاصة:

  • @اعادة التشغيل- تنفيذ الأمر عند إعادة التشغيل
  • @سنويأو @سنويا- التنفيذ في 1 يناير، على غرار الإدخال: " 0 0 1 1 * "
  • @شهريا- أداء في الأول من كل شهر، على غرار " 0 0 1 * * "
  • @أسبوعي- أداء كل يوم أحد، أي ما يعادل " 0 0 * * 0 "
  • @يوميًاأو @منتصف الليل- كل يوم عند منتصف الليل" 0 0 * * * "
  • @ساعيا- مرة واحدة في الساعة، " 0 * * * * "

لذلك، للتنفيذ اليومي للبرنامج النصي الخاص بنا كل منتصف الليل، يمكنك كتابة:

@ منتصف الليل /الصفحة الرئيسية/إيفانوف/اختبار

بعد الانتهاء من إنشاء الجدول، احفظ الملف واخرج من المحرر. سيتم حفظ الجدول المخصص في /var/spool/cron/crontabsتحت اسم المستخدم الحالي.

يتم توفير ملف لمهام النظام والمهام الإدارية /etc/crontabيتميز بناء جملة الإدخالات بوجود قيمة إضافية - المستخدم الذي سيتم إطلاق المهمة نيابة عنه:

دقيقة ساعة يوم شهر day_of_week أمر المستخدم

مثال على هذا الإدخال:

0 19 * * 1-5 الجذر /etc/backup

وفقًا لذلك، سيتم إطلاق البرنامج النصي في الساعة 19:00 من الاثنين إلى الجمعة /الخ/النسخ الاحتياطينيابة عن المستخدم جذر.

يحتوي هذا الملف أيضًا على جداول النظام، لذا يجب أن يتم تحريره بحذر. يجب وضع جميع المهام النظامية والإدارية هناك.

كما نرى كرونإنه سهل الاستخدام للغاية، ولكنه في الوقت نفسه يوفر فرصًا غنية لإعداد الجداول الزمنية في خادم Ubuntu. نأمل أن تساعد هذه المقالة المسؤولين على إتقان هذه الأداة.

, | |

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

تثبيت كرون

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

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

سودو الرابطة بين الحصول على التحديث
Sudo apt-get install cron

نظام التشغيل سنت/ريد هات لينكس:

تحديث سودو يم
Sudo yum install vixie-cron crontabs

بعد اكتمال التثبيت، عليك التأكد من أن cron يعمل في الخلفية:

سودو /sbin/chkconfig كروند على
Sudo /sbin/service cron start

بناء الجملة الأساسي

خذ بعين الاعتبار المثال التالي للمهمة التي يجب جدولتها للتشغيل:

5 * * * * حليقة 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 الخفي الذي يحتوي على جدول زمني لتشغيل أوامر وبرامج معينة. يوجد هذا الملف في /var/spool/cron/crontab، لكن ليس من المعتاد تحريره مباشرة. لإضافة البرامج الضرورية إلى الملف، استخدم الأمر الذي يحمل نفس الاسم - crontab. أي أنه لتحرير ملف crontab، يمكنك ببساطة إدخال:

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

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

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

يمكن للمستخدم المرتفع تحرير crontab للمستخدمين الآخرين باستخدام:

كرونتاب -u<пользователь>-ه

إخراج كرون

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

أول فتح crontab:

ثم قم بتحريره مثل هذا:

SHELL=/bin/bash
الصفحة الرئيسية=/
ميلتو = "example@some_user.com"
#هذا تعليق
* * * * * echo "قم بتشغيل هذا الأمر كل دقيقة"

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

للقيام بذلك تحتاج فقط إلى إضافة:

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

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

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

تقييد الوصول إلى كرون

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