تكنولوجيا

ما هي وظائف كرون وكيفية استخدامها؟ – تقنية المعلومات الذكية

تيتيانا يورتشينكو / شاترستوك

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

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

كيف يعمل كرون؟

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

crontab -e

سيؤدي هذا إلى فتح ملف crontab الخاص بالمستخدم في محرر نصوص CLI الافتراضي.إذا كان هذا يجعلك عالقًا في vim ، فيمكنك تغيير المحرر الافتراضي عن طريق التشغيل select-editor في بعض الأنظمة أو عن طريق الإضافة export Visual=micro لك ~/.bashrc (أو ما يعادلها).

افتراضيًا ، قد يكون ملف crontab فارغًا ، لذا يجب إضافة الوظائف يدويًا. عادة ما يكون تنسيق وظيفة cron:

minute hour day thirty day period weekday  

يمكن أن يكون الأمر المراد تنفيذه أي شيء ، بما في ذلك البرامج النصية للصدفة

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

15 * * * * command

سيتم تشغيل هذا في الدقيقة الخامسة عشرة من كل ساعة وكل يوم وكل شهر ، بغض النظر عن يوم الأسبوع.

إذا كنت ترغب في تشغيل وظيفة كل يوم جمعة في الساعة 5:30 مساءً ، يمكنك استخدام:

30 17 * * 5 command

cron يدعم أيضًا قيمة النطاق وقيمة الخطوة. تتضمن قيمة النطاق كل قيمة في نطاق معين. إذا كنت ترغب في تشغيل الوظيفة كل ساعة في العمل ، يمكنك استخدام:

 9-17 * * 1-5 command

من الإثنين إلى الجمعة ، من 9 صباحًا حتى 5 مساءً. وبالمثل ، يمكنك تحديد قائمة القيم عن طريق فصل القيم بفاصلات.

يتم تشغيل قيمة الخطوة في فترات زمنية أكثر تحديدًا. يمكنك استخدام الطريقة التالية لتشغيل الوظيفة كل ساعتين:

 */2 * * * command

تذكر أن الساعة تبدأ في منتصف الليل 00:00. ثم ستعمل وظيفتك مرة واحدة ، ثم 2 صباحًا ، ثم 4 صباحًا ، وهكذا.

بعض إصدارات cron دعم المزيد من بناء الجملة ، مثل @every day تشغيل مرة واحدة في اليوم ، أو @reboot قم بتشغيله عند كل إعادة تشغيل ، على الرغم من أن التوزيع الخاص بك قد يكون مختلفًا.

إذا كنت تريد طريقة سهلة لتصحيح الأخطاء cron القواعد ، هناك العديد من المحررين عبر الإنترنت ، على سبيل المثال ، سيعرض لك crontab.guru معنى تعبير التقويم الخاص بك في مصطلحات عامة ، وهي في الدقيقة يمر كل ساعتين. “

ذات صلة: كيفية استخدام cron في حاوية Docker

تأكد من أن Cron يعمل بشكل صحيح

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

* * * * * echo "take a look at" >> logfile 2>&1

هذا >> يلحق عامل التشغيل الإخراج بالملف ، و 2>&1 يضمن المشغل تضمين stderr في الإخراج. ما يعادل bash عادل &>> في حين أن >>، ولكن هذا قد لا ينطبق على كل توزيع ، لأن cron يستخدم /bin/sh إفتراضي.

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

MAILTO="yourname@gmail.com"

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

* * * * * echo "cron mail is functioning!"

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

يستخدم Cron / bin / sh افتراضيًا بدلاً من Bash

ربما تستخدم قشرة مختلفة cron قم بتشغيل عملك. باش (/bin/bash) هو غلاف شائع في معظم التوزيعات وتنفيذ sh.هذا /bin/sh الملف هو ارتباط رمزي sh تحققت ، لكنها ليست دائما باش. على الأنظمة المستندة إلى Debian (مثل Ubuntu) و macOS ، /bin/sh متصلا sprint إفتراضي.

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

  • اضف إليه SHELL=/bin/bash إلى أعلى كرونتاب الخاص بك.قد تحتاج أيضًا إلى إضافة BASH_ENV="/root/.bashrc" دعه يقرأ ملف تكوين bash الخاص بك.
  • تسكع /bin/bash قبل الأوامر في كل وظيفة.قد تحتاج إلى ضبط BASH_ENV حتى إذا لم تقم بالتبديل إلى bash عالميًا ، فإن المتغيرات هي نفسها.
  • استخدم باش شيبانج #!/bin/bash في الجزء العلوي من كل نص. هذا يتطلب منك وضع كل وظيفة في ملف البرنامج النصي الخاص بها.

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

قم بتحديث crontab يدويًا

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

crontab -l > my_crontab

ثم قم بتحميل الملف إلى نظام آخر واستخدم الأمر التالي “لتثبيته”:

crontab my_crontab

بهذه الطريقة ، لن يتسبب التحرير المباشر في أي أخطاء ، لأنه لا يزال يتم تحميله بواسطة cron.

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

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