شرح Cron & crontab

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

ما هو كرون؟

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

أعمال كومو

يبدأ عفريت كرون من /الخ/rc.d/ o / الخ / init.d حسب التوزيع. يعمل Cron في الخلفية ، ويتحقق من جدول مهام crontab كل دقيقة / الخ / كرونتاب س و / var / spool / cron بحثا عن المهام المطلوب إنجازها. كمستخدم ، يمكننا إضافة أوامر أو نصوص مع مهام إلى cron لأتمتة بعض العمليات. هذا مفيد على سبيل المثال لأتمتة تحديث نظام أو نظام نسخ احتياطي جيد.

المادة ذات الصلة:
البرنامج التعليمي: قم بتثبيت حزمتي .tar.gz و .tar.bz2

ما هو كرونتاب؟

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

Crontab هي أسهل طريقة لإدارة مهام cron على أنظمة متعددة المستخدمين ، إما كمستخدم نظام بسيط أو مستخدم جذر.

باستخدام كرونتاب

نبدأ بمثال بسيط.

سنعمل على أتمتة تحديث النظام ، للتخلص من الإزعاج المتمثل في "يتعين علي دائمًا التحديث ولا يعجبني ذلك!"

كيف
المادة ذات الصلة:
أوامر لمعرفة النظام (تحديد الأجهزة وبعض تكوينات البرامج)

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

#! / bin / bash #script update example #choose your Distribution # debian-ubuntu # apt-get update & apt-get -y Upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

قم بإزالة # من خط التوزيع الخاص بك. في حالة وجود Ubuntu / Debian ، فإنه يبدأ بـ apt-get.

نحفظ البرنامج النصي باسم update.sh (على سبيل المثال ، دليل البرامج النصية في منزلك). نقوم بتغيير أذونات التنفيذ للبرنامج النصي المذكور باستخدام:

chmod a + x ~ / scripts / update.sh

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

أضف المهام إلى crontab

نقوم بتنفيذ إصدار crontab باستخدام crontab -e ، في بعض التوزيعات (مثل Ubuntu) يمنحنا خيار اختيار محرر النص الذي نريده ، والباقي يتبقى لنا vi. سيبدو ملف crontab بهذا الشكل.

# mh dom mon dow أمر المستخدم

حيث:

  • m يتوافق مع الدقيقة التي سيتم فيها تنفيذ البرنامج النصي ، وتتراوح القيمة من 0 إلى 59
  • h في الوقت المحدد ، يتم التعامل مع تنسيق 24 ساعة ، وتتراوح القيم من 0 إلى 23 ، بحيث يكون الرقم 0 هو 12:00 منتصف الليل.
  • دوم يشير إلى يوم من الشهر ، على سبيل المثال يمكنك تحديد 15 إذا كنت تريد تشغيل كل 15 يومًا
  • اتجاه يعني يوم الأسبوع ، يمكن أن يكون رقميًا (من 0 إلى 7 ، حيث يكون 0 و 7 يوم الأحد) أو أول 3 أحرف من اليوم باللغة الإنجليزية: الاثنين ، الثلاثاء ، الأربعاء ، الخميس ، الجمعة ، السبت ، الشمس.
  • المستخدم يحدد المستخدم الذي سينفذ الأمر ، يمكن أن يكون جذرًا ، أو مستخدمًا مختلفًا طالما أن لديهم أذونات لتنفيذ البرنامج النصي.
  • أمر يشير إلى الأمر أو المسار المطلق للبرنامج النصي المراد تنفيذه ، على سبيل المثال: /home/usuario/scripts/update.sh، إذا كان يستدعي برنامجًا نصيًا ، فيجب أن يكون قابلاً للتنفيذ

لتوضيح بعض الأمثلة على مهام cron الموضحة:

15 10 * * * user /home/user/scripts/update.sh

سيتم تشغيل البرنامج النصي update.sh في الساعة 10:15 صباحًا كل يوم

15 22 * * * user /home/user/scripts/update.sh

سيتم تشغيل البرنامج النصي update.sh في الساعة 10:15 مساءً كل يوم

00 10 * 0 root apt-get -y update root user

سيتم تشغيل تحديث كل يوم أحد في الساعة 10:00 صباحًا

تحديث 45 10 * * sun root apt-get -y

سيقوم مستخدم الجذر بتشغيل تحديث كل يوم أحد (الأحد) الساعة 10:45 صباحًا

30 7 20 11 * user /home/usuario/scripts/updata.sh

في 20 نوفمبر في تمام الساعة 7:30 ، سيقوم المستخدم بتشغيل البرنامج النصي

30 7 11 11 sun user /home/usuario/scripts/pastel_con_velitas.sh

في 11 تشرين الثاني (نوفمبر) الساعة 7:30 صباحًا وهذا هو الأحد ، سيحتفل المستخدم بمدير النظام الخاص به (أي أنا)

01 * * * * user /home/usuario/scripts/molestorecordatorio.sh

تذكير مزعج كل دقيقة من كل ساعة كل يوم (غير مستحسن).

لا يزال من الممكن التعامل معها نطاقات خاصة:

30 17 * * 1,2,3,4,5

الساعة 5:30 بعد الظهر كل يوم من الاثنين إلى الجمعة.

* * 00،12،1,15,28 XNUMX XNUMX

في الساعة 12 ظهرًا في الأول والخامس عشر والثامن والعشرين من كل شهر (مثالي لكشوف المرتبات)

إذا كان هذا محيرًا ، فإن مقابض crontab سلاسل خاصة لتحديد هذه النطاقات.

@ reboot تشغيل مرة واحدة عند بدء التشغيل
يتم تشغيل @ سنويًا مرة واحدة فقط في السنة: 0 0 1 1 *
annually مثلyearly
يتم تشغيلmonthly مرة واحدة في الشهر ، في اليوم الأول: 0 0 1 * *
weekly Weekly الدقيقة الأولى من الساعة الأولى من الأسبوع. 0 0 * * 0 ″.
daily يوميًا ، الساعة 12:00 صباحًا. 0 0 * * *
midnight نفسdaily
@ ساعة في الدقيقة الأولى من كل ساعة: 0 * * * *

استخدامه بسيط جدا.

hourly user /home/user/scripts/molestorecordatorio.shmonthly user /home/user/scripts/backup.shdaily root apt-get update && apt-get -y Upgrade

اخيرا وليس اخرا:

إدارة وظائف Cron

ملف crontab

استبدل ملف crontab الحالي بملف معرف من قبل المستخدم

-e كرونتاب

قم بتحرير ملف crontab الخاص بالمستخدم ، كل سطر جديد سيكون مهمة crontab جديدة.

crontab -l

قائمة بجميع مهام المستخدم crontab

كرونتاب د

احذف ملف crontab الخاص بالمستخدم

crontab -c دير

يحدد دليل crontab للمستخدم (يجب أن يكون لهذا المستخدم أذونات كتابة وتنفيذ)

مستخدم crontab -u

بادئة للتعامل مع crontab لمستخدم آخر ، أمثلة:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user

يمكن رؤية هذه الأداة ، مثل العديد من الأدوات الأخرى ، بمزيد من العمق والتفصيل في:

شكرا لوسين!