Task Scheduling في Linux: تعلم cron وcrontab خطوة بخطوة

كثير من أعمال Linux تتكرر يوميا: نسخ احتياطي، تنظيف logs، تحديث تقارير. الحل الأفضل هو جدولة المهام بدل التنفيذ اليدوي.

في هذا الدرس ستتعلم استخدام cron وcrontab وat بشكل عملي وآمن.

ما هو cron في Linux؟

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

صيغة سطر cron (Cron Expression)

* * * * * command
- - - - -
| | | | |
| | | | +----- day of week (0-7)
| | | +------- month (1-12)
| | +--------- day of month (1-31)
| +----------- hour (0-23)
+------------- minute (0-59)

كل خانة تحدد متى يتم تنفيذ الأمر.

أوامر crontab الأساسية

crontab -e
crontab -l
crontab -r
الأمر الوظيفة
crontab -e تعديل جدول المهام
crontab -l عرض المهام الحالية
crontab -r حذف جميع مهام المستخدم
تنبيه: الأمر crontab -r يحذف الجدول بالكامل. استخدمه بحذر شديد.

أمثلة عملية على Cron Jobs

# كل يوم الساعة 2:30 صباحا
30 2 * * * /home/rachid/scripts/backup.sh

# كل 5 دقائق
*/5 * * * * /home/rachid/scripts/health-check.sh

# كل يوم أحد الساعة 4:00 صباحا
0 4 * * 0 /home/rachid/scripts/weekly-report.sh

إعادة توجيه Logs داخل Cron

الأفضل دائما حفظ مخرجات cron في ملف لتسهيل التشخيص:

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

بهذه الطريقة تسجل المخرجات العادية والأخطاء معا.

تشغيل مهمة مرة واحدة باستخدام at

echo "/home/rachid/scripts/once.sh" | at 23:30
atq
atrm 2
  • at: جدولة مهمة مرة واحدة
  • atq: عرض قائمة المهام المجدولة
  • atrm: حذف مهمة مجدولة

متى أستخدم Cron ومتى أستخدم systemd timer؟

  • Cron: بسيط وسريع للمهام التقليدية
  • systemd timer: تحكم أدق وتكامل أفضل مع logging وdependencies

للمبتدئ: ابدأ بـ cron. لاحقا انتقل إلى systemd timers في البيئات المتقدمة.

أخطاء شائعة في جدولة المهام

  • نسيان استخدام المسار الكامل للأوامر داخل cron
  • عدم إعطاء صلاحية التنفيذ للسكريبت
  • عدم حفظ logs مما يصعب معرفة سبب الفشل
  • الاعتماد على متغيرات بيئة غير معرفة في cron

تمرين عملي: أول مهمة Cron في Linux

mkdir -p /tmp/cron-lab
echo '#!/bin/bash' > /tmp/cron-lab/time.sh
echo 'date >> /tmp/cron-lab/time.log' >> /tmp/cron-lab/time.sh
chmod +x /tmp/cron-lab/time.sh
crontab -e
# أضف:
# * * * * * /tmp/cron-lab/time.sh

بعد دقيقتين، تحقق من الملف:

cat /tmp/cron-lab/time.log

إذا وجدت تواريخ مضافة تلقائيا، فمهمتك المجدولة تعمل بنجاح.

FAQ: أسئلة شائعة حول cron وcrontab

ما هو cron في Linux؟

cron خدمة في Linux تنفذ الأوامر تلقائيا حسب جدول زمني تحدده في crontab.

كيف أعدل جدول cron الخاص بي؟

استخدم crontab -e لإضافة أو تعديل المهام المجدولة للمستخدم الحالي.

ما الفرق بين cron وat في Linux؟

cron للمهام الدورية المتكررة، بينما at يستخدم لتشغيل مهمة مرة واحدة في وقت محدد.

الخطوة التالية

في الدرس القادم سندخل إلى الأقراص وأنظمة الملفات في Linux.

التالي: الأقراص وأنظمة الملفات
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن