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.
التالي: الأقراص وأنظمة الملفات