11 أمثلة على أوامر Cron في Linux [جدولة الوظائف Cron]

مهام Linux في الخلفية بشكل تلقائي في فترات منتظمة باستخدام الأمر Crontabسنستعرض في هذه المقالة كيفية جدولة وتشغيل

التعامل مع وظيفة متكررة يدويًا مهمة مرهقة لمسؤولي النظام، ويمكن جدولة وتشغيل مثل هذه المهام تلقائيًا في الخلفية دون تدخل بشري باستخدام خادم cron في نظام Linux أو نظام تشغيل شبيه ب Unix

يمكنك أتمتة النظام نسخ احتياطي لنظام Linux، جدولة التحديثات، و مزامنة الملفات، والعديد من الأشياء الأخرى باستخدام خادم الوظائف المجدولة (Cron)، والذي يُستخدم لتشغيل المهام المجدولة من سطر الأوامر أو استخدام أدوات عبر الإنترنت لإنشاء مهام Cron.

Cron يستيقظ كل دقيقة ويتحقق من المهام المجدولة بطريقة قابلة للعد – ملف الـ Crontab (CRON TABle) هو جدول يمكننا من خلاله جدولة مثل هذه المهام المتكررة.

نصائح: يمكن لكل مستخدم أن يمتلك crontab الخاص به لإنشاء وتعديل وحذف المهام. بشكل افتراضي cron مُمكّن للمستخدمين، ولكن يمكننا تقييد المستخدمين عن طريق إضافة إدخال في ملف /etc/cron.deny.

ملف Crontab في نظام Linux

يتألف ملف Crontab من أوامر في كل سطر ويحتوي فعليًا على ستة حقول مفصولة بينها إما بمسافة أو فراغ. الحقول الخمسة الأولى تمثل الوقت لتشغيل المهام والحقل الأخير هو للأمر.

  • الدقيقة (تحتوي على القيم بين 0-59)
  • الساعة (تحتوي على القيم بين 0-23)
  • يوم الشهر (تحتوي على القيم بين 1-31)
  • 1-12 الشهر من السنة (تحتوي القيم على Jan-Dec، يمكنك استخدام أول ثلاثة أحرف من اسم كل شهر، مثل Jan أو Jun.)
  • يوم الأسبوع (تحتوي القيم على 0-6 أو Sun-Sat، يمكنك أيضًا استخدام أول ثلاثة أحرف من اسم كل يوم، مثل Sun أو Wed.)
  • الأمر – المسار/الأمر أو السكربت الذي تريد جدولته.

1. قائمة إدخالات كرونتاب

قائمة أو إدارة المهمة باستخدام الأمر crontab مع الخيار -l للمستخدم الحالي.

# crontab -l

00 10 * * * /bin/ls >/ls.txt

2. تحرير إدخالات كرونتاب

لتحرير إدخال كرونتاب، استخدم الخيار -e كما هو موضح أدناه. المثال أدناه سيفتح المهام المجدولة في محرر VI. قم بإجراء التغييرات اللازمة واضغط على مفاتيح :wq لحفظ الإعدادات تلقائيًا والخروج.

# crontab -e

3. قائمة مهام كرون المجدولة للمستخدم

لعرض قائمة المهام المجدولة لمستخدم معين يسمى tecmint باستخدام الخيار -u (المستخدم) و -l (قائمة).

# crontab -u tecmint -l

no crontab for tecmint

ملاحظة: يمتلك المستخدم root الامتيازات الكاملة لرؤية إدخالات crontab الخاصة بالمستخدمين الآخرين. لا يمكن للمستخدمين العاديين رؤية ما يخص غيرهم.

4. حذف إدخال كرونتاب

تحذير: سيقوم crontab باستخدام الخيار -r بإزالة المهام المجدولة بالكامل دون تأكيد. استخدم الخيار -i قبل حذف crontab الخاص بالمستخدم.

# crontab -r

5. التنبيه قبل حذف Crontab

crontab مع الخيار -i سيطلب تأكيدًا من المستخدم قبل حذف crontab الخاص بالمستخدم.

# crontab -i -r

crontab: really delete root's crontab?

6. الأحرف الخاصة المسموح بها (*, -, /, ?, #)

  • النجمة(*) – تطابق جميع القيم في الحقل أو أي قيمة ممكنة.
  • الشرطة(-) – لتحديد نطاق.
  • شرطة (/) – الحقل الأول /10 تعني كل عشر دقائق أو زيادة في النطاق.
  • الفاصلة (,) – لفصل العناصر.

7. جدول زمني للنظام بأكمله

A system administrator can use the predefined cron directory as shown below.

  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly

8. جدولة وظيفة لوقت محدد

تحذف الوظائف أدناه الملفات الفارغة والدلائل من /tmp في 12:30 صباحًا يوميًا. تحتاج إلى ذكر اسم المستخدم لتنفيذ أمر crontab. في المثال أدناه، المستخدم root يقوم بوظيفة cron.

# crontab -e

30 0 * * *   root   find /tmp -type f -empty -delete

9. سلاسل خاصة لجدول زمني شائع

Strings Meanings
@reboot The command will run when the system reboots.
@daily Once per day or may use @midnight.
@weekly Once per week.
@yearly Once per year. we can use the @annually keyword also.

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

10. أوامر متعددة باستخدام علامة التعجب المزدوجة(&&)

في المثال أدناه، تعمل command1 و command2 يوميًا.

# crontab -e

@daily <command1> && <command2>

11. تعطيل إشعارات البريد الإلكتروني.

بشكل افتراضي، يرسل كرون البريد إلى حساب المستخدم الذي يقوم بتنفيذ العملية المجدولة. إذا كنت ترغب في تعطيل ذلك، قم بإضافة عملية الكرون الخاصة بك مشابهة للمثال أدناه. باستخدام الخيار >/dev/null 2>&1 في نهاية الملف، سيقوم بتوجيه كل إخراج نتائج الكرون تحت /dev/null.

[root@tecmint ~]# crontab -e
* * * * * >/dev/null 2>&1

الاستنتاج: الأتمتة في المهام قد تساعدنا على أداء مهامنا بطرق أفضل، خالية من الأخطاء، وفعالة. يمكنك الرجوع إلى صفحة الدليل الخاصة بالكرونتاب للمزيد من المعلومات عن طريق كتابة الأمر ‘man crontab’ في الطرفية الخاصة بك.

Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/