ذكري المظهر

جدولة وظائف كرون مع crontab

جدولة تنفيذ السكربتات بوساطة Cron Job

جدولة تنفيذ السكربتات بوساطة Cron Job

جدول المحتويات:

Anonim

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

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

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

ما هو ملف Crontab

Crontab (جدول cron) هو ملف نصي يحدد جدول وظائف cron. هناك نوعان من ملفات crontab. ملفات crontab على مستوى النظام وملفات crontab للمستخدم الفردي.

يتم تخزين ملفات المستخدمين crontab حسب اسم المستخدم ، ويختلف موقعهم حسب أنظمة التشغيل. في النظام المستند إلى Red Hat مثل CentOS ، يتم تخزين ملفات crontab في الدليل /var/spool/cron بينما يتم تخزين ملفات Debian و Ubuntu في دليل /var/spool/cron/crontabs .

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

/etc/crontab والملفات الموجودة داخل الدليل /etc/cron.d عبارة عن ملفات crontab على مستوى النظام يمكن تحريرها فقط بواسطة مسؤولي النظام.

في معظم توزيعات Linux ، يمكنك أيضًا وضع برامج نصية داخل الدلائل /etc/cron.{hourly, daily, weekly, monthly} وسيتم تنفيذ البرامج النصية كل hour/day/week/month .

بناء جملة Crontab والمشغلين

يحتوي كل سطر في ملف المستخدم crontab على ستة حقول مفصولة بمسافة متبوعة بالأمر المطلوب تشغيله.

* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

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

  • * المشغل النجمة يعني أي قيمة أو دائما. إذا كان لديك رمز العلامة النجمية في حقل ساعة ، فهذا يعني أن المهمة سيتم تنفيذها كل ساعة. يسمح لك المشغل الفاصلة بتحديد قائمة قيم للتكرار. على سبيل المثال ، إذا كان لديك 1, 3, 5 في حقل Hour ، 1, 3, 5 المهمة في الساعة 1 صباحًا و 3 صباحًا و 5 صباحًا. - يسمح لك عامل الواصلة بتحديد نطاق من القيم. إذا كان لديك 1-5 في حقل يوم الأسبوع ، فستعمل المهمة كل يوم من أيام الأسبوع (من الاثنين إلى الجمعة). / - يسمح لك عامل التشغيل المائل بتحديد القيم التي سيتم تكرارها خلال فترة زمنية معينة بينهما. على سبيل المثال ، إذا كان لديك */4 في حقل Hour ، فهذا يعني أنه سيتم تنفيذ الإجراء كل أربع ساعات. هو نفس تحديد 0, 4, 8, 12, 16, 20 . بدلاً من العلامة النجمية قبل مشغل الخط المائل ، يمكنك أيضًا استخدام نطاق من القيم ، يعني 1-30/10 نفس 1, 11, 21 مثل 1, 11, 21 .

ملفات Crontab على مستوى النظام

بناء جملة ملفات crontab على مستوى النظام مختلف قليلاً عن crontabs المستخدم. يحتوي على حقل مستخدم إلزامي إضافي يحدد المستخدم الذي سيشغل مهمة cron.

* * * * * command(s) * * * * * command(s)

وحدات الماكرو المعرفة مسبقا

هناك العديد من وحدات ماكرو جدول كرون الخاصة المستخدمة لتحديد فترات مشتركة. يمكنك استخدام هذه الاختصارات بدلاً من مواصفات تاريخ الأعمدة الخمسة.

  • @yearly (أو @annually ) - قم بتشغيل المهمة المحددة مرة واحدة سنويًا في منتصف الليل (12:00 ص) من 1 يناير. أي ما يعادل 0 0 1 1 * . @monthly - قم بتشغيل المهمة المحددة مرة واحدة شهريًا في منتصف الليل في اليوم الأول من الشهر. أي ما يعادل 0 0 1 * * . @weekly - قم بتشغيل المهمة المحددة مرة واحدة في الأسبوع في منتصف ليلة الأحد. أي ما يعادل 0 0 * * 0 . @daily - قم بتشغيل المهمة المحددة مرة واحدة يوميًا في منتصف الليل. أي ما يعادل 0 0 * * * . @hourly - قم بتشغيل المهمة المحددة مرة واحدة في الساعة في بداية الساعة. أي ما يعادل 0 * * * * . @reboot - قم بتشغيل المهمة المحددة عند بدء تشغيل النظام (وقت التمهيد).

قيادة لينكس Crontab

يتيح لك الأمر crontab تثبيت أو فتح ملف crontab للتحرير.

يمكنك استخدام الأمر crontab لعرض مهام cron أو إضافتها أو إزالتها أو تعديلها باستخدام الخيارات التالية:

  • crontab -e - تحرير ملف crontab ، أو إنشاء واحد إذا لم يكن موجودًا بالفعل. crontab -l - عرض محتويات ملف crontab. crontab -r - إزالة ملف crontab الحالي. crontab -i - إزالة ملف crontab الحالي الخاص بك مع موجه قبل الإزالة. crontab -u - تحرير استخدام آخر ملف crontab. يتطلب امتيازات مسؤول النظام.

يفتح الأمر crontab ملف crontab باستخدام المحرر المحدد بواسطة متغيرات البيئة VISUAL أو EDITOR .

متغيرات Crontab

يقوم برنامج الخفي cron تلقائيًا بتعيين عدة متغيرات للبيئة.

  • يتم تعيين المسار الافتراضي على PATH=/usr/bin:/bin . إذا كان الأمر الذي تتصل به موجودًا في المسار المحدد في cron ، فيمكنك إما استخدام المسار المطلق للأمر أو تغيير متغير cath $PATH . لا يمكنك إلحاق ضمنيًا :$PATH كما تفعل مع البرنامج النصي العادي. يتم تعيين shell الافتراضي إلى /bin/sh . يمكنك ضبط غلاف مختلف عن طريق تغيير متغير SHELL.Cron باستدعاء الأمر من الدليل الرئيسي للمستخدم. يمكن تجاوز متغير HOME من خلال الإعدادات في crontab. يتم إرسال إشعار البريد الإلكتروني إلى صاحب crontab. لاستبدال السلوك الافتراضي ، يمكنك استخدام متغير بيئة MAILTO مع قائمة (مفصولة بفواصل) بجميع عناوين البريد الإلكتروني التي تريد تلقي إعلامات البريد الإلكتروني. إذا تم تعريف MAILTO ولكنه فارغ ( MAILTO="" ) ، فلن يتم إرسال أي بريد.

قيود Crontab

يمكن لمسؤولي النظام التحكم في المستخدمين الذين يمكنهم الوصول إلى الأمر crontab باستخدام /etc/cron.deny و /etc/cron.allow الملفات. تتكون الملفات من قائمة أسماء المستخدمين ، اسم مستخدم واحد لكل سطر.

بشكل افتراضي ، يوجد ملف /etc/cron.deny فقط وهو فارغ ، مما يعني أنه يمكن لجميع المستخدمين استخدام الأمر crontab. إذا كنت ترغب في رفض الوصول إلى أوامر crontab لمستخدم معين ، فأضف اسم المستخدم إلى هذا الملف.

إذا كان الملف /etc/cron.allow موجودًا فقط ، فيمكن للمستخدمين الذين تم سردهم في هذا الملف استخدام الأمر crontab .

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

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

فيما يلي بعض الأمثلة على وظائف cron والتي ستوضح لك كيفية جدولة مهمة لتعمل على فترات زمنية مختلفة.

  • قم بتشغيل أمر الساعة 15:00 يوميًا من الاثنين إلى الجمعة:

    0 15 * * 1-5 command

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

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    قم بتشغيل أمرين كل يوم اثنين في الساعة 3 بعد الظهر (استخدم عامل التشغيل && بين الأمرين):

    0 15 * * Mon command1 && command2

    قم بتشغيل برنامج PHP النصي كل دقيقتين وكتابة الإخراج إلى ملف:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    قم بتشغيل برنامج نصي كل يوم ، كل ساعة ، على مدار الساعة ، من الساعة 8 صباحًا إلى الساعة 4 مساءً:

    00 08-16 * * * /path/to/script.sh

    قم بتشغيل برنامج نصي في أول يوم اثنين من كل شهر ، الساعة 7 صباحًا

    0 7 1-7 * 1 /path/to/script.sh

    قم بتشغيل البرنامج النصي في الساعة 9:15 مساءً ، يومي 1 و 15 من كل شهر:

    15 9 1, 15 * * /path/to/script.sh

    اضبط متغيرات HOME و PATH و SHELL و MAILTO مخصصة وقم بتشغيل أمر كل دقيقة.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

استنتاج

لقد تعلمت كيفية إنشاء وظائف cron وجدولة المهام في تاريخ ووقت محددين.

لا تتردد في ترك تعليق إذا كان لديك أي أسئلة.

cron crontab المحطة