|
لوسين نشرت منذ فترة برنامج تعليمي ممتاز على cron و crontab التي أعتقد أنها تستحق المشاركة. يعد Cron نوعًا من المكافئ للمهام المجدولة في Windows، فقط أنه يتم التعامل معها من المحطة. أولئك الذين يفضلون الواجهة المرئية لتحقيق نفس الهدف ، يمكنهم رؤية ذلك عنصر آخر. |
ما هو كرون؟
يأتي اسم كرون من الكلمة اليونانية كرونوس والتي تعني "الوقت". في نظام التشغيل Unix ، يعد cron مديرًا عاديًا لمعالجة الخلفية (عفريتًا) يدير العمليات أو البرامج النصية على فترات منتظمة (على سبيل المثال ، كل دقيقة أو يوم أو أسبوع أو شهر). يتم تحديد العمليات التي يجب تنفيذها والوقت الذي يجب تنفيذها فيه في ملف crontab.
أعمال كومو
يبدأ عفريت كرون من /الخ/rc.d/ o / الخ / init.d حسب التوزيع. يعمل Cron في الخلفية ، ويتحقق من جدول مهام crontab كل دقيقة / الخ / كرونتاب س و / var / spool / cron بحثا عن المهام المطلوب إنجازها. كمستخدم ، يمكننا إضافة أوامر أو نصوص مع مهام إلى cron لأتمتة بعض العمليات. هذا مفيد على سبيل المثال لأتمتة تحديث نظام أو نظام نسخ احتياطي جيد.
ما هو كرونتاب؟
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
يمكن رؤية هذه الأداة ، مثل العديد من الأدوات الأخرى ، بمزيد من العمق والتفصيل في: