دليل المبتدئين لاستخدام Cron لجدولة المهام في نظام Linux

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

في بعض توزيعات Linux ، مثل Arch Linux ، لا يتم تثبيت cron افتراضيًا لأنه يستخدم systemd كبديل cron. أيضا ، هناك العديد من تطبيقات تنفيذ كرون ، ولكل منها طريقته الخاصة في تحرير / جدولة وظائف Cron. في هذا البرنامج التعليمي ، سنركز على cronie ، وهو الإعداد الافتراضي في معظم توزيعات Linux ، مثل Ubuntu.

دليل المبتدئين لاستخدام Cron لجدولة المهام في نظام Linux - لينكس

عرض الإدخالات لكرون

عرض crontab يسمح لك بعرض المهام المجدولة التي ستعمل تحت حسابك.

crontab -l
دليل المبتدئين لاستخدام Cron لجدولة المهام في نظام Linux - لينكس

يمكنك أيضًا عرض المهام المجدولة للحساب الروت باستخدام sudo.

sudo crontab -l

تحرير إدخالات كرون

إذا لم تقم أبدًا بإعداد مهمة cron ، سيعرض عرض هذا الملف ملفًا فارغًا أو ملفًا يحتوي على تعليقات. لإضافة إدخال ، ستحتاج إلى فتح ملف crontab باستخدام الخيار -e.

crontab -e

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

البنية الأساسية لتعريف إدخال crontab هي:

m h d mon dow command

m = دقيقة بين 0 و 59

h = ساعة بين 0 و 23

d = يوم من الشهر بين 1 و 31

mon = شهر بين 1 و 12

dow = يوم من الأسبوع بين 0 و 6. صفر يوم الأحد.

Command = الأمر للتشغيل.

على سبيل المثال ، تحتاج إلى تشغيل أمر بانتظام للتحقق مما إذا كان خادم mysql يعمل بشكل جيد أم لا. لجعل الأمر يعمل كل ساعة ، استخدم بناء الجملة التالي:

0 * * * * mysqlcheck --all-databases --check-only-changed --silent

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

42 1 * * * mysqlcheck --all-databases --check-only-changed --silent

بالإضافة إلى ذلك ، يمكن استخدام الفواصل لعناصر متعددة (مثل 1،3،5) ويمكن استخدام الواصلات للنطاقات. يشير الاستخدام الخاص للعلامة النجمية في مكان عنصر في التعبير إلى العنصر المطلوب تشغيله لكل قيم الحقل. (ستظهر علامة النجمة في حقل الساعة للتشغيل لكل ساعة من 0 – 23.) تشير علامة التصنيف (#) في السطر إلى تعليق (مما يعني أنه لن يتم تنفيذ سطر الشفرة).

وأخيرًا ، سيشير الخط المائل للأمام إلى قيمة خطوة. على سبيل المثال ، سيتم إدخال كل خمس دقائق كـ * / 5 (من لحظة حفظ crontab وإنشاء مهمة cron). إذا كنت تستخدم “5” فقط ، فسيتم تشغيل الإدخال فقط في علامة الخمس دقائق.

على سبيل المثال هذا:

34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent

34: دقيقة التشغيل بين 0 و 59

3: الساعة ، بين 0 و 23

*: تشير النجمتان الأوسطتان كل يوم (من 1 إلى 31) وكل شهر (من 1 إلى 12)

0: يشير الصفر النهائي إلى يوم الأحد

سيتم تشغيل هذه المهمة الساعة 3:34 صباحًا كل شهر ، كل أسبوع يوم الأحد.

رموز قصيرة

يسمح لك Crontab باستخدام بعض الرموز القصيرة لتسهيل قراءة إدخالات كرون الخاصة بك.

@reboot – تشغيل مرة واحدة ، عند بدء التشغيل

@yearly – تشغيل مرة في السنة ، “0 0 1 1 *”. </>

@annually – مثلyearly

@monthly – تشغيل مرة في الشهر ، “0 0 1 * *”

@weekly – تشغيل مرة واحدة في الأسبوع ، “0 0 * * 0”

@daily – ركض مرة واحدة في اليوم ، “0 0 * * *”

@midnight – نفسdaily

@hourly – تشغيل مرة واحدة كل ساعة ، “0 * * * *”

فمثلا:

@hourly mysqlcheck --all-databases --check-only-changed --silent

تحرير إدخالات cron كمستخدم آخر

هناك أوقات عندما تحتاج إلى إضافة crontab كروت. على سبيل المثال ، لتجديد شهادة Let is Encrypt SSL تلقائيًا ، يلزمك تشغيل نص التجديد بصلاحيات الروت. لتحرير crontab كروت ، ببساطة أضف sudo أمام الأمر:

sudo crontab -e

وبالمثل ، يمكنك جدولة مهمة cron كمستخدم آخر ، باستخدام علامة -u:

sudo crontab -u username -e

على سبيل المثال ، لتشغيل مهمة cron كمستخدم “www-data” ، استخدم الأمر التالي:

sudo crontab -u www-data -e

مراجعة نشاط كرون

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

دليل المبتدئين لاستخدام Cron لجدولة المهام في نظام Linux - لينكس

إضافة MAILTO=youremail@yourdomain.com سترسل جميع تقارير مهمة cron إلى بريد إلكتروني محدد. يمكن العثور على هذا المتغير في أعلى شاشة تحرير crontab. ومع ذلك ، إذا لم يكن موجودًا ، يمكنك إضافة المتغير ، وسيعمل كما هو متوقع.

يمكن فصل عناوين البريد الإلكتروني المتعددة بفاصلة. إذا كنت بحاجة إلى أمر مختلف عبر البريد الإلكتروني في مكان آخر ، يمكنك إضافة الأمر MAILTO مباشرة فوق الأمر. سيتم إرسال الأوامر بعد هذا mailto إلى العنوان الجديد. إذا تركت MAILTO = فارغة ، فسيتم إرسال الإخطارات إلى مالك إدخال cron.

بدلاً من ذلك ، يمكنك استخدام عامل إعادة التوجيه (>) لإرسال المخرجات عند الحاجة إليها.

34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent > /dev/null

سيؤدي ما سبق إلى إعادة توجيه الإخراج إلى “/ dev / null” ، والذي لا يرسل أي بريد إلكتروني ويتجاهل المخرجات.

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

sudo grep crontab syslog
دليل المبتدئين لاستخدام Cron لجدولة المهام في نظام Linux - لينكس

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

زر الذهاب إلى الأعلى