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

  • تتيح لك أدوات Cron و crontab جدولة المهام التلقائية في نظام Linux عن طريق تحديد أوقات دقيقة باستخدام خمسة حقول زمنية وأوامر.
  • من الضروري التحكم في وقت النظام، ومسار النظام، والأذونات، ومتغيرات البيئة لضمان تشغيل المهام بشكل صحيح وبدون أخطاء صامتة.
  • يمكن أن يؤثر نشاط Cron على الأداء ويتطلب ممارسات جيدة، وتسجيل البيانات، والمراقبة لتجنب التعارضات والأحمال الزائدة.
  • توجد أدوات وبدائل مثل Anacron و Fcron و launchd التي توسع إمكانيات البرمجة إلى ما هو أبعد من cron الكلاسيكي.

أتمتة المهام باستخدام Crontab في نظام Linux

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

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

ما هو برنامج cron ولماذا هو مهم جدًا في نظام لينكس؟

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

ما هو Oreaon 10؟
المادة ذات الصلة:
Oreon 10: ما يقدمه هذا التوزيع من Linux، الإصدارات والمزايا

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

timedatectl

يُظهر لك هذا الأمر ما إذا كانت الساعة متزامنة، والمنطقة الزمنية المستخدمة، وما إذا كان هناك خادم NTP نشط. إذا لاحظت أن المنطقة الزمنية غير صحيحة، يمكنك تغييرها، على سبيل المثال، إلى أوروبا/مدريد باستخدام الأمر التالي:

timedatectl set-timezone Europe/Madrid

تأتي توزيعات لينكس عادةً مُهيأة مسبقًا خوادم NTP لمزامنة الساعة. إذا كنت بحاجة إلى تعديلها أو إضافة ساعات أخرى، فيتم ذلك من خلال خدمة NTP وملف التكوين الخاص بها، على سبيل المثال /etc/ntp.conf، وذلك حسب التوزيعة وخادم NTP المحدد.

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

Crontab: جدول مهام cron

جوهر جدولة كرون هو ملف crontab، وهو جدول مهام يتم فيه تحديد الأوامر وجدولها الزمنييمكن لكل مستخدم أن يمتلك جدول مهام خاص به (crontab)، لذلك لا تحتاج إلى صلاحيات المستخدم الجذر لأتمتة المهام الشخصية.

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

بناء الجملة الأساسي المكون من سطر واحد في crontab

يتوافق كل سطر من crontab مع مهمة cron ويتبع هذا النمط المكون من خمسة حقول للطابع الزمني بالإضافة إلى الأمر:

minuto hora día_del_mes mes día_de_la_semana comando

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

  • مينوتوالقيم من 0 إلى 59.
  • مرةالقيم من 0 إلى 23.
  • يوم من الشهرالقيم من 1 إلى 31.
  • شهر: القيم من 1 إلى 12 أو أسماء الأشهر المختصرة في بعض الأنظمة.
  • ديا دي لا سمانا: القيم من 0 إلى 7، حيث يمثل 0 و7 عادةً يوم الأحد؛ ويمكن أيضًا استخدام الأسماء الإنجليزية المختصرة (mon، tue...).

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

الأحرف الخاصة في تعابير كرون

لتجنب الإرهاق من كتابة الكثير من الأسطر، يدعم cron عدة طرق. المُعدِّلات والأحرف الخاصة مما يمنح البرمجة قوة أكبر بكثير:

  • *تشير النقطتان الرأسيتان (:) إلى "جميع القيم" في ذلك الحقل. على سبيل المثال، تشير علامة النجمة (*) في حقل الشهر إلى جميع الأشهر.
  • ,يفصل الرمز : قائمة القيم. على سبيل المثال، 1,15 في يوم الشهر ينفذ المهمة في اليوم الأول واليوم الخامس عشر.
  • -يشير الرمز : إلى نطاق متصل. على سبيل المثال، من 1 إلى 5 في أيام الأسبوع يعادل من الاثنين إلى الجمعة.
  • /تُستخدم : كخطوة أو فاصل زمني، وعادة ما تكون بجوار * (على سبيل المثال، */10 بالدقائق تعني كل 10 دقائق).
  • نطاقات مع استثناءمن خلال الجمع بين النطاقات والقوائم والخطوات، يمكنك إنشاء قواعد معقدة، مثل تشغيل مهمة ما في غضون نطاق من الدقائق باستثناء مهمة محددة.

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

تقارير خاصة من @yearly و @daily والشركة

في الحالات المتكررة، يسمح لك cron باستخدام الكلمات المفتاحية المختصرة والتي تحل محل حقول الوقت الخمسة. وهي تسهل قراءة الملف بشكل كبير:

  • @اعادة التشغيل: ينفذ الأمر مرة واحدة في كل مرة يبدأ فيها النظام.
  • @سنوي o @سنويا: يعادل "0 0 1 1 *"، ويتم إطلاقه مرة واحدة في السنة.
  • @شهريا: يساوي "0 0 1 * *"، ويتم تنفيذه في اليوم الأول من كل شهر عند منتصف الليل.
  • @أسبوعي: يعادل "0 0 * * 0"، ويتم إطلاقه مرة واحدة في الأسبوع.
  • @يوميًا y @منتصف الليلكلاهما "0 0 * * *"، كل يوم في تمام الساعة 00:00.
  • @كل ساعة: يتوافق مع "0 * * * *"، وهي الدقيقة الأولى من كل ساعة.

هذه السلاسل مريحة للغاية، ولكن يجدر التذكر أن لا يسمحون لك باختيار وقت محدد بخلاف الوقت الافتراضي.على سبيل المثال، إذا كنت تريد تشغيل شيء ما كل يوم في الساعة 13:00، فسيتعين عليك استخدام الشكل الرقمي القياسي ("0 13 * * *") بدلاً من @daily.

كيفية إنشاء وتعديل ملف crontab الخاص بالمستخدم؟

الطريقة الصحيحة لإدارة مهام المستخدم هي من خلال الأمر -e كرونتابيؤدي هذا إلى فتح ملف crontab الخاص بالمستخدم الحالي في المحرر الافتراضي (nano، vim، إلخ) حتى تتمكن من إضافة أو تعديل الأسطر.

في المرة الأولى التي تستخدمه فيها، عادةً ما يقوم النظام بـ اسأل عن المحرر الذي ترغب في استخدامهمن ذلك الحين فصاعدًا، في كل مرة تقوم فيها بتشغيل crontab -e، سيتم فتح نفس المحرر مع المحتويات الحالية للملف، بما في ذلك تعليقات المساعدة التي تم إنشاؤها بواسطة التوزيعة.

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

crontab -l

إذا كنت تريد في أي وقت قم بتفريغ جدول المهام الخاص بك بالكامليمكنك القيام بذلك باستخدام:

crontab -r

وهناك أيضاً نوع آخر crontab -r -iقبل الحذف، سيطلب منك تأكيد العملية، وهو أمر يُنصح به بشدة لتجنب حذف جميع المهام المُكوّنة عن طريق الخطأ.

مثال عملي: إنشاء برنامج نصي وجدولته باستخدام cron

لرؤية كل هذا عمليًا، يمكننا إعداد نص برمجي تجريبي وتشغيله تلقائيًا باستخدام cron. تخيل أنك أنشأت ملفًا باسم query.sh في مجلدك الرئيسي باستخدام أمر بسيط:

nano consulta.sh

يمكنك وضع شيء مثل:

#!/bin/bash
# script de ejemplo
sudo ls -l / > archivoResultado.txt

هذا النص الصغير يقوم هذا البرنامج بسرد محتويات الدليل الجذر وكتابتها في ملف نصي. يُسمى الملف archivoResultado.txt. لكي يقوم cron بتنفيذه دون مشاكل، من الضروري منحه صلاحيات التنفيذ:

chmod ugo+x consulta.sh

حان الآن وقت إضافته إلى جدول المهام (crontab). نفّذ الأمر التالي:

crontab -e

ويمكنك إضافة سطر، على سبيل المثال، لجعله يعمل كل يوم في الساعة 19:00 مساءً:

00 19 * * * usuario /ruta/completa/consulta.sh

وفي هذا السياق، تشير الحقول إلى الدقيقة 0، الساعة 19، أي يوم من أيام الشهر، أي شهر، أي يوم من أيام الأسبوعبعد ذلك، يتم تحديد المستخدم (في حالة استخدام جدول مهام النظام crontab)، ثم مسار البرنامج النصي. ومن الأمثلة النموذجية الأخرى:

  • كل يوم أحد الساعة 19:00 مساءً:
    00 19 * * 0 usuario /ruta/consulta.sh
  • في الرابع من فبراير الساعة 7:00 مساءً من كل عام:
    00 19 4 2 * usuario /ruta/consulta.sh

خيارات أوامر crontab لإدارة المهام

أتمتة المهام باستخدام Crontab في نظام Linux

الثنائي كرونتاب لا يقتصر الأمر على مهام التحرير فقط، بل يشمل أيضًا إدارة ملفات المستخدمين الآخرين أو تحميل الملفات من مسارات محددةالخيارات الأكثر استخداماً هي:

  • crontab archivo: يستبدل ملف crontab الحالي الخاص بالمستخدم بمحتويات الملف المحدد.
  • crontab -e: يفتح ملف crontab الخاص بالمستخدم الحالي في المحرر الافتراضي.
  • crontab -lيعرض على الشاشة جميع المهام المُهيأة حاليًا لهذا المستخدم.
  • crontab -r: يحذف جدول مهام المستخدم بالكامل (بدون تأكيد، إلا إذا تم استخدام الخيار -i).
  • crontab -c dir: يسمح لك بتحديد الدليل الذي سيتم فيه تخزين ملفات crontab، بشرط وجود الأذونات اللازمة.
  • crontab -u usuario: يدير جدول مهام المستخدم (يتطلب صلاحيات الجذر).

ومن الشائع أيضاً الحديث عن crontab -h للاطلاع على المساعدة السريعة، حيث يتم شرح جميع الخيارات المتاحة بالتفصيل.

البيئة والمتغيرات في تنفيذ cron

من الأمور التي تسبب الصداع في كثير من الأحيان هو داء كرون لا يقوم بتنفيذ الأوامر في نفس بيئة جلستك التفاعلية.أي أنه لا يقوم بتحميل ملفي ‎.bashrc أو ‎.profile إلا إذا قمتَ بتحميلهما إجبارياً. ويقوم افتراضياً بتعريف بعض المتغيرات مثل:

  • الصفحة الرئيسية: الدليل الرئيسي للمستخدم الذي يقوم بتشغيل crontab.
  • اسم السجل y USERاسم المستخدم.
  • SHELL: الصدفة المستخدمة لتفسير الأوامر، عادةً /bin/sh.
  • PATHالمسار الأساسي للبحث الثنائي، وغالبًا ما يكون محدودًا إلى حد ما مثل /usr/bin:/bin.

إذا اعتمدت على أوامر في مسار النظام (PATH) لا يستطيع برنامج cron العثور عليها، فستواجه أخطاءً صامتة. لهذا السبب يُنصح بشدة باستخدام هذه الطريقة. استخدم المسارات المطلقة في برامجك النصية (على سبيل المثال، /usr/bin/python بدلاً من python فقط)، أو إعادة تعريف PATH في crontab نفسه:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

يمكنك أيضًا تغيير الغلاف المستخدم وإضافة برنامج التحميل الخاص بك. .bashrc إذا لزم الأمر، اضبط بداية ملف crontab الخاص بك على النحو التالي:

SHELL=/bin/bash
. $HOME/.bashrc

أما بالنسبة للمخرجات، بما أنها أوامر سطر الأوامر، يمكنك إعادة توجيه مخرجات STDOUT و STDERR تمامًا كما هو الحال في الطرفية.على سبيل المثال، لمنع مهمة ما من إنشاء رسائل بريد إلكتروني أو سجلات:

* * * * * comando > /dev/null 2>&1

أو لتجميع المخرجات في ملف سجل خاص بالمهمة، وهو أمر مفيد للغاية لتصحيح الأخطاء والتدقيق:

*/10 * * * * /ruta/script.sh >> /var/log/mis_cron.log 2>&1

التحكم في الوصول إلى cron: cron.allow و cron.deny

في العديد من الأنظمة، يتم التحكم في من يمكنه جدولة المهام من خلال الملفات. /etc/cron.allow y /etc/cron.denyتُستخدم هذه الملفات لتقييد أو منح الوصول إلى أمر crontab.

المنطق بسيط: إذا كان موجودًا cron.allowلا يمكن استخدام cron إلا من قبل المستخدمين المدرجين هناك؛ إن وُجدت. كرون دينيجميع المستخدمين مُصرَّح لهم باستثناء المُدرجين. إذا كان كلا الخيارين موجودين وظهر المستخدم في كليهما، لـ cron.allow الأولويةوبالتالي، سيتمكن هذا المستخدم من استخدام crontab.

على سبيل المثال، يمكنك حظر الجميع ثم تمكين مستخدم معين فقط باستخدام شيء مثل:

echo ALL | sudo tee -a /etc/cron.deny
echo ishmael | sudo tee -a /etc/cron.allow

حتى مع امتيازات sudo، إذا تم حظر المستخدم وفقًا لهذه الملفات، لن تتمكن من تعديل ملف crontab الخاص بك أو ملف crontab الخاص بالآخرين.وستتلقى رسالة تشير إلى أنه لا يمكنك استخدام برنامج crontab.

أنواع crontab: النظام والمستخدم

يحتوي الخادم النموذجي على مستويين من التكوين: من جهة، هناك... جدول مهام النظامومن جهة أخرى crontabs المستخدم شخصي. كلاهما يستخدمان بنية متشابهة، لكن يتم تخزينهما وإدارتهما بشكل مختلف.

  • جدول مهام النظام (UNIX/Linux): يوجد عادة في /etc/crontab وفي الملفات تحت /etc/cron.dيتطلب الأمر صلاحيات الجذر للتعديل ويستخدم عادةً للخدمات الحيوية ومهام الصيانة العامة وتدوير السجلات وما إلى ذلك. تتضمن الأسطر هنا حقلاً إضافياً يحتوي على المستخدم الذي يتم تنفيذ الأمر تحته.
  • جدول مهام المستخدميمكن لكل حساب أن يمتلك ملف crontab واحداً، ويمكن الوصول إليه باستخدام الأمر crontab -e. ويتم تخزين هذه الملفات في مجلدات مثل: / var / spool / cron o / var / spool / cron / crontabs وذلك بحسب التوزيعة. لا يتم تعديلها مباشرةً؛ بل يتم تعديلها باستخدام أمر crontab، ويتم تنفيذها بصلاحيات المستخدم الذي أنشأها.

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

سجلات ومخرجات مهام cron

عندما يحدث خطأ ما في مهمة مجدولة، من الضروري معرفة مكان البحث. اعتمادًا على تكوين النظام، يمكن توجيه مخرجات cron إلى سجل النظام (syslog)، أو ملف مخصص، أو قائمة انتظار البريد المحلية..

سطح مكتب أولاما
المادة ذات الصلة:
أوامر لينكس للحصول على معلومات عن الأجهزة (مقارنة مع ويندوز)

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

عند تثبيت وكيل نقل البريد (MTA) مثل Postfix أو Sendmailبشكل افتراضي، يرسل برنامج cron مخرجات كل مهمة (stdout وstderr) إلى صندوق البريد المحلي للمستخدم الذي نفذها. عادةً ما توجد قائمة الانتظار هذه في /var/spool/mail/usuarioيمكنك قراءتها باستخدام أدوات مثل mailx باستخدام أمر البريد الإلكتروني.

إذا كنت ترغب في تخصيص السلوك، يمكنك تحديد متغير البيئة مايلتو في بداية ملف crontab الخاص بك. على سبيل المثال:

MAILTO="tu.correo@ejemplo.com"

وبذلك، سيتم إرسال جميع مخرجات المهام في جدول المهام هذا إلى ذلك العنوان، بشرط أن يكون الخادم مُهيأً بشكل صحيح لإرسال البريد الخارجي. إذا قمت بوضع بريد إلكتروني فارغ (MAILTO=""), cron سيتجاهل جميع المخرجات ولن يقوم بإنشاء رسائل بريد إلكتروني.

تأثير كرون على أداء النظام

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

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

عندما تكون هناك وظائف تسحب الشبكة - على سبيل المثال، مزامنة النسخ الاحتياطية عن بعد— استدعاءات واجهة برمجة التطبيقات أو التنزيلات المجمعة —، قد تلاحظ أيضًا زيادة في زمن الاستجابة (ping) وزمن الاستجابة الإجماليوخاصة في البيئات ذات النطاق الترددي المحدود.

ممارسات جيدة لتقليل التأثير

للاستفادة من ميزة cron دون إجهاد الجهاز، من المفيد اتباع بعض النصائح. استراتيجيات بسيطة للغاية:

  • قم بتوزيع المهام في أوقات مختلفة، وخاصة المهام الثقيلة، مع تجنب ساعات الذروة للمستخدمين أو الخدمات.
  • استخدم أدوات مثل رحلة جميلة لخفض أولوية وحدة المعالجة المركزية لبعض المهام طويلة الأمد:
    0 3 * * * nice -n 19 /ruta/script.sh
  • استفد من المرافق مثل com.cpulimit إذا كنت بحاجة إلى تحديد النسبة المئوية لوحدة المعالجة المركزية التي يمكن أن تستخدمها عملية تم تشغيلها بواسطة cron.
  • قم بدمج cron مع قطيع أو آليات حظر أخرى لمنع التنفيذ المتزامن لنفس البرنامج النصي (مفيد جدًا في مهام النسخ الاحتياطي أو الصيانة).

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

الأخطاء الشائعة عند جدولة المهام باستخدام Cron وكيفية تجنبها

أي شخص عمل مع وظائف cron لفترة من الوقت يعرف أن هناك عددًا من أخطاء شائعة تتكرر في النهايةإن السيطرة عليها توفر عليك ساعات طويلة من التجربة والخطأ.

أحد أكثرها شيوعاً يتعلق بـ مسار محدود في بيئة cronقد لا يتم العثور على أوامر مثل git أو python أو php إذا لم تحدد المسار الكامل أو إذا لم تُضِف متغير PATH إلى بداية ملف crontab. الحل واضح: استخدم المسارات المطلقة أو أعد تعريف متغير PATH بشكل صريح.

ومن الأخطاء الشائعة الأخرى نسيان... أذونات تنفيذ البرامج النصيةإذا كان الملف غير قابل للتنفيذ أو لم يكن لدى مستخدم cron صلاحيات عليه، فلن يتم تشغيل المهمة. يُنصح بالتحقق باستخدام الأمر `ls -ly`؛ وإذا لزم الأمر، استخدم الأمر `chmod +x /path/to/script.sh`.

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

وأخيرًا، تعود العديد من المشاكل إلى برمجة زائدة (كثرة المهام المتكررة)، أو نقص السجلات المفيدة، أو غياب الإشعارات. يساعد إنشاء نظام بسيط للسجلات والتنبيهات - على سبيل المثال، باستخدام خدمات خارجية مثل Healthchecks.io - في اكتشاف توقف مهمة cron عن العمل قبل فوات الأوان.

أدوات خارجية للعمل بشكل أكثر راحة مع كرون

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

  • خبير كرونتابمحرر نصوص خفيف الوزن للغاية عبر الإنترنت يتيح لك كتابة تعبير cron ورؤية معناه كنص عادي ("كل 15 دقيقة"، "في الساعة 03:00 صباحًا أيام الأحد"، إلخ). كما أنه يُبرز أخطاء بناء الجملة ويعرض أمثلة ونصائح.
  • مولد مهام Cronصُممت هذه الأداة لإنشاء مهام مُعدة مسبقًا باستخدام نماذج بسيطة. تتيح لك تحديد الفترات الزمنية النموذجية وتخصيصها، ثم تُعيد سطر cron جاهزًا للنسخ.
  • إيزيكرونخدمة عبر الإنترنت لا تقتصر على توليد التعبيرات فحسب، بل تقوم أيضًا ينفذ المهام عن بُعد عن طريق استدعاء عناوين URL وفقًا للجدول الزمني الذي تحدده. يتضمن ذلك لوحة تحكم، وسجلات تنفيذ، وتنبيهات عبر البريد الإلكتروني في حالة حدوث أعطال.
  • KDE Cron (KCron)تطبيق رسومي مُدمج في بيئة سطح المكتب KDE، يوفر واجهة مرئية لإدارة مهام cron دون الحاجة إلى استخدام سطر الأوامر. مفيد جدًا لمن يفضلون النقر على الملفات بدلاً من تحريرها.
  • صانع كرونمولد ويب مصمم خصيصًا للتكامل مع مكتبات مثل Quartz. يتيح لك إنشاء تعابير معقدة دون الحاجة إلى الكتابة اليدوية، وهو مثالي لمن يعملون مع أنظمة تعتمد على cron ولكن من بيئات التطوير.

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

بدائل لـ cron واستخدامه في أنظمة أخرى

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

في بيئة يونكس/لينكس، يمكنك العثور على أدوات مثل:

  • أناكرونصُممت هذه الميزة للآلات التي لا تعمل طوال اليوم. إذا تعذر تنفيذ مهمة يومية بسبب إيقاف تشغيل الجهاز، فسيتم تشغيلها عند إعادة تشغيله.
  • إف كرونعلى غرار برنامج Anacron، يتيح لك هذا البرنامج دمج المهام حسب التاريخ والوقت المحدد دون الحاجة إلى تشغيل الكمبيوتر باستمرار. ويتطلب عادةً التثبيت والتجميع من الكود المصدري في العديد من توزيعات البرامج.
  • hcronيقدم هذا النظام مفاهيم مثل التصنيفات لتصنيف المهام، وإدارة الشبكات أو مجموعات المستخدمين المختلفة بمرونة أكبر، مما يضيف مزيدًا من الأمان والتنظيم.
  • ماكونمتوافق مع cron ولكن مع القدرة على إعادة تعريف الجداول الزمنية من خلال إعادة بناء المهام من نقطة البدايةكما أنه عادة ما يتم تثبيته بشكل منفصل ولا يتم تضمينه بشكل قياسي في معظم الأنظمة.

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

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

استخدام Cron في بيئات الأعمال ومستوى التعقيد

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

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

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

تثبيت تطبيقات لينكس على نظام ويندوز 11 باستخدام WSL2
المادة ذات الصلة:
كيفية تثبيت وتكوين نظام ويندوز الفرعي لنظام لينكس 2 (WSL2)

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


أضف كمصدر مفضل