كيفية جدولة المهام في Linux باستخدام Cron و Crontab

كيفية جدولة المهام في Linux باستخدام Cron و Crontab

هل كنت تعلم هذا بليد عداء تم تعيينه في عام 2019؟ هذه ثلاث سنوات من الآن! ناهيك عن العودة إلى المستقبل 2 ، حيث يسافرون عبر الزمن إلى عام 2015. ومع ذلك ، ليس لدينا سيارات طائرة ولا توجد نسخ متماثلة بيننا (على حد علمي).





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





يمكن لكل مستخدم Linux الاستفادة من جدولة المهام ، سواء كانت متعلقة بالنظام (مثل تنظيف السجلات القديمة وملفات تحديث الحزم ) أو خدمة المستخدم (فحص البريد الإلكتروني ، تنزيل ملفات بودكاست ...). مستخدمو Windows لديهم برنامج جدولة المهام منذ Windows 95. الأداة المساعدة التي تقوم بنفس المهمة على Linux تسمى cron ، وسنشرح هنا كيفية استخدامها.





من أين أشتري الكلاب بالقرب مني

ما هو كرون؟

Cron هي خدمة نظام تعمل في الخلفية وتتحقق من المهام المجدولة وتنفذها إذا وجدت أيًا منها. المهام - وتسمى أيضًا 'وظائف cron' - يتم تحديدها في ملفات تكوين خاصة (crontabs) ، والتي يقوم cron بمسحها كل دقيقة. يمكن العثور على عدة إصدارات من cron عبر توزيعات Linux المختلفة. على سبيل المثال ، تسمى مفترق كرون فيدورا كروني ، وهناك أيضًا fcron و bcron ، و دكرون . يحتوي بعضها على ميزات إضافية ، بينما يركز البعض الآخر بشكل أكبر على الأمان ، لكنهم جميعًا يعتمدون على نفس الفكرة.

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



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

إذا كنت جادًا في إدارة وقتك ، فمن المحتمل أن يكون لديك تقويم من نوع ما - تطبيق أو على الأقل قطعة من الورق. Crontab يشبه إلى حد كبير تقويم جهاز الكمبيوتر الخاص بك. يحتوي على معلومات حول المهام المجدولة ، ويخبر cron بالأوامر التي يجب تشغيلها في أي وقت.

في الواقع ، هناك العديد من crontabs على نظامك. كل مستخدم لديه crontab الخاص به ، بما في ذلك الجذر (المسؤول). يتم تخزين crontabs المستخدم في ملفات





/var/spool/cron/crontabs/

. ال

crontab -l

سيسرد الأمر ملف crontab للمستخدم الحالي. يمكنك التحقق من الجذر باستخدام





sudo crontab -l

.

بالإضافة إلى ذلك ، يوجد ملف crontab للنظام

/etc/crontab

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

/etc/cron.hourly/

و

/etc/cron.daily/

و

/etc/cron.weekly/

، و

/etc/cron.monthly/

المجلدات ، وفي بعض التوزيعات ، فإن ملف

/etc/cron.d/

مجلد كذلك. بشكل عام ، لا يجب عليك التعامل مع هذه المهام ، حيث يتم إنشاء معظمها تلقائيًا بواسطة التطبيقات المثبتة.

كيفية جدولة المهام باستخدام Cron

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

crontab -e

أمر. لتعديل الجذر أو crontabs للمستخدمين الآخرين ، قم بتشغيل الأمر بامتيازات إدارية وأضف اسم المستخدم الخاص بهم بعد الخيار -u:

sudo crontab -u root -e
sudo crontab -u username -e

يتكون ملف crontab من قسمين. الأول يحتوي على متغيرات البيئة التي يتم إعدادها تلقائيًا. يمكنك تغيير متغيرات PATH و HOME و SHELL بأمان ، وتعديل متغير MAIL.

الجزء الثاني من الملف هو 'الجدول الزمني' الفعلي للمهام المجدولة. تحتل كل مهمة سطرًا (صفًا) في الجدول ، مع أعمدة تمثل القيم التالية:

لجدولة المهام بنجاح ، تحتاج إلى معرفة القليل عن بناء جملة crontab:

  • يجب أن تكون الأرقام أعدادًا صحيحة (أعداد صحيحة) ، ويمكنك استخدام العلامة النجمية (*) في أي من الأعمدة كحرف بدل ، أي 'كل دقيقة / يوم / شهر ...'.
  • في العمود 'يوم من الشهر' ، احرص على عدم تعيين تاريخ لا يقع في الشهر المحدد في عمود 'الشهر' (على سبيل المثال ، 30 فبراير).
  • يقبل كل من عمودي 'الشهر' و 'اليوم من الأسبوع' الأسماء المختصرة للأشهر والأيام ، على التوالي ، وهما غير حساسين لحالة الأحرف.
  • في العمود 'يوم من الأسبوع' ، يشير كل من 0 و 7 إلى يوم الأحد. يتطلب عمود 'الساعة' تنسيق 'الوقت العسكري' (24 ساعة) ، ولكن لا يمكنك استخدام الرقم 24 - بدلاً من ذلك ، يشير الرقم 0 إلى 12 صباحًا ، وذلك لأن قيم الدقيقة والساعة واليوم من الأسبوع تبدأ عند 0 بدلاً من 1.
  • الثواني غير مدعومة ، لذا لا يمكنك جدولة مهمة في ثانية معينة.

ما يمكنك فعله هو جدولة نطاقات زمنية شاملة باستخدام واصلة (14-22 ضمن 'ساعات' ستشغل المهمة بشكل مستمر من 2 مساءً إلى 10 مساءً) ، أو تشغيل مهمة واحدة عدة مرات عن طريق تحديد قائمة مفصولة بفواصل (1 ، 3.5 ضمن 'يوم من الأسبوع' سيتم تشغيل المهمة في أيام الاثنين والأربعاء والجمعة).

في الوقت نفسه ، يتم تمثيل قيم الخطوة بشرطة مائلة للأمام (/) ، وهذه تشير إلى مقدار التخطيات داخل النطاق ؛ على سبيل المثال ، 3-20 / 3 ضمن 'الساعات' ستقوم بتشغيل المهمة كل ثلاث ساعات من 3 صباحًا إلى 8 مساءً. يكون هذا مفيدًا عندما تريد تكرار المهام كل X ساعة ، لأنه يمكنك الجمع بين علامة النجمة والخطوة (* / X). يمكنك دمج النطاقات مع القوائم والخطوات مع النطاقات طالما أنك تستخدم الأرقام. بمعنى آخر ، لا يُسمح بتركيبات مثل 'jan-mar' أو 'Tue، Fri-Sun'.

بدلاً من ذلك ، بدلاً من تعيين قيمة لكل عمود ، يمكنك فقط كتابةweekly أوyearly أوmonthly أوdaily أوhourly في بداية الصف ، متبوعًا بأمر. مجدولة هكذا ، سيتم تشغيل المهام في أول مثيل ممكن ، لذلك سيتم تشغيلweekly في منتصف ليل اليوم الأول من الأسبوع. إذا كنت تريد تشغيل مهمة على الفور عند بدء تشغيل النظام ، فاستخدم الأمرreboot.

في هذا المثال ، قمنا بجدولة نسخة احتياطية يوميًا في الساعة 08:20 و 20:20. تتغير خلفية الشاشة تلقائيًا كل ثلاثة أيام في الساعة 19:00 ، وسيقوم البرنامج النصي بالتحقق من ملفات البودكاست الجديدة كل يوم اثنين في الساعة 10:20 و 20:20. تم تعيين تذكير بعيد ميلاد ليوم 25 مارس ويتم تشغيله كل 30 دقيقة ضمن الإطار الزمني المحدد. أخيرًا ، يتحقق البرنامج النصي من البريد الإلكتروني كل 15 دقيقة من 8 إلى 20 ، ولكن فقط في أيام العمل. أنت حر في تنظيم crontab باستخدام مسافات وعلامات جدولة بين الأعمدة ، ولكن ليس بداخلها (لا تضع مسافات بين الفواصل والواصلات والشرطات المائلة).

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

كيفية التحقق من تنفيذ وظائف Cron

من المفترض أن يعمل Cron بهدوء في الخلفية ويسمح لك بالعمل دون إزعاج بينما يعتني بمهامك. ولكن كيف يمكنك التأكد من أنها تعمل بالفعل؟

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

cat /var/log/syslog | grep -i cron

يجعل الخيار -i استعلامنا غير حساس لحالة الأحرف. من المحتمل أن يكون لدى cron ملف السجل الخاص به في مكان ما

/var/log/

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

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

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

سيؤدي استخدام رمز> واحد إلى الكتابة فوق الملف في كل مرة يتم فيها تشغيل الأمر. لتجنب ذلك ، استخدم >> بدلاً من ذلك - يقوم بإلحاق الإخراج بالملف الموجود.

ماذا لو كان Cron لا يعمل؟

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

هل خدمة كرون تعمل؟

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

للتوزيعات باستخدام systemd:

systemctl status cron

للتوزيعات باستخدام Upstart:

service cron status

إذا كانت التوزيعات الخاصة بك تستخدم نهج System V 'القديم' ، فقم بإدراج جميع الخدمات مع:

كيف ترى من شاهد الانستغرام الخاص بك
initctl list

ومعرفة ما إذا تم سرد cron.

هل يسمح لك حتى أن يكون لديك ملف crontab؟

افحص

/etc

مجلد للملفات المسماة

cron.allow

و

cron.deny

. على Ubuntu ، لا يجب أن يكون أي منهما موجودًا ، مما يعني أنه يُسمح لجميع المستخدمين بإدارة وظائف cron. ومع ذلك ، إذا كان هناك ملف

كيفية التحقق مما إذا كانت بطاقة الرسومات الخاصة بك تعمل بنظام التشغيل Windows 10
cron.allow

الملف ، يجب أن يحتوي على اسم المستخدم الخاص بك. على العكس من ذلك ، إذا كان

cron.deny

الملف موجود ، يجب ألا يكون اسم المستخدم فيه. يغادر ال

cron.deny

ملف فارغ يعني أن الجذر فقط والمستخدمين المدرجين في

cron.allow

يمكن أن تحتوي على ملفات crontab.

هل المتغيرات الخاصة بك مضبوطة بشكل صحيح؟

يقوم Crontab تلقائيًا بتعيين متغير SHELL الخاص بك إلى

/bin/sh

. ومع ذلك، إذا قوقعتك المفضلة هي الأسماك أو bash ، يجب عليك تغيير متغير SHELL

. وبالمثل ، يحتوي متغير PATH على عدد قليل من الأدلة بشكل افتراضي. هذا هو المكان الذي يبحث فيه crontab عن أوامر Linux. إذا فشلت مهمة cron الخاصة بك في العمل ، فقد يكون ذلك بسبب أن crontab لا 'يرى' الأمر الذي استخدمته. لتجنب ذلك ، أضف أدلة تحتوي على الأوامر إلى متغير PATH ، مفصولة بنقطتين:

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

إذا كنت لا ترغب في تعديل هذا في crontab الخاص بك ، يمكنك تحديد هذه المتغيرات في البرنامج النصي الذي تريد تشغيله كوظيفة cron.

هل تنسيق crontab الخاص بك على النقطة؟

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

  • أضف سطرًا فارغًا في نهاية ملف crontab
  • تخلص من علامة٪ بشرطة مائلة للخلف إذا كان الأمر يتضمنها
  • اكتب التعليقات كسطر منفصلة تبدأ بـ #. لا تكتب تعليقات على نفس السطر مثل متغيرات البيئة ، أو بجوار أوامر مهمة cron.

هل يجب عليك حقًا استخدام الجهاز؟

بالطبع لا. يمكن لمستخدمي KDE جدولة وظائف cron باستخدام KCron ، والتي يمكن الوصول إليها من ملف إعدادات النظام> برنامج جدولة المهام وحدة. من خلال واجهة مباشرة تتيح لك اختيار وتعديل كل شيء ببضع نقرات بالماوس ، يسعد KCron استخدامه.

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

يجب أن تكون على دراية بالحلول الأخرى ، مثل Crontab-UI و مينيكرون . إنها أكثر ملاءمة للمستخدمين الذين يديرون أجهزة متعددة ووظائف cron ، وإحدى أروع ميزاتهم هي الواجهة المستندة إلى الويب.

هل توجد أي بدائل لـ Cron؟

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

هذا شيء لا يستطيع كرون فعله بمفرده. على هذا النحو ، فهي مناسبة للخوادم وأجهزة الكمبيوتر التي تعمل باستمرار ، ولكنها لن تنفذ مهمة تمت جدولتها أثناء إيقاف تشغيل الكمبيوتر. هذا هو المكان anacron يأتي دور. إنه من الناحية الفنية ليس 'بديلاً' أو بديلاً لـ cron. بدلاً من ذلك ، يكمل anacron cron ويجب استخدامه بجانبه ، كما هو الحال في العديد من توزيعات Linux ، بما في ذلك Ubuntu و Ubuntu. يسجل Anacron آخر مرة تم تنفيذ المهمة فيها ، ويتحقق مما إذا كانت هناك أي حالات مفقودة أثناء إيقاف تشغيل النظام. سيتم تشغيلها عند إعادة تشغيل الكمبيوتر ، ولكن يمكن تنفيذ كل مهمة مرة واحدة فقط في اليوم.

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

وماذا عنك؟ كيف تنظم مهامك الرقمية؟ ما المهام التي تقوم بجدولتها على Linux؟ شارك بقصصك ونصائحك حول استخدام cron في التعليقات.

حقوق الصورة: لوحة الجدولة بواسطة غونزالو أراغون عبر شاترستوك

يشارك يشارك سقسقة بريد الالكتروني 12 موقع فيديو أفضل من اليوتيوب

إليك بعض مواقع الفيديو البديلة لموقع YouTube. يحتل كل منهما مكانة مختلفة ، لكنهما يستحقان الإضافة إلى إشاراتك المرجعية.

اقرأ التالي
مواضيع ذات صلة
  • لينكس
  • لينكس
نبذة عن الكاتب إيفانا إيزادورا ديفسيك(تم نشر 24 مقالة)

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

المزيد من Ivana Isadora Devcic

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك