شرح crontab & cron jobs

Mohamed Ali

[ VIP ]
24 مارس 2010
670
4
0
سم الله الرحمن الرحيم



درسنا اليوم عن خاصية مفيدة جداً تنفع الكثير من مستخدمين اللنكس و اليونكس خاصة مشرفي الانظمة, و كما هو واضح من العنوان cron jobs و هي وظائف الكرون. هذه الميزة مفيدة للغاية , كم مرة اردت ان تفعل سكربتاً معيناً او امراً معيناً في وقت معين؟ لنفرض انك أردت أن تفعل شيئاً معيناً على السرفر او جهازك في منتصف الليل ووقتها تكون في سابع نومك! لماذا لا تجعل النظام يفعل ماتريد في الوقت الذي تريد دومنا تدخلك ؟ تساعد هذه الميزةعلى أتمتة النظام و التحكم به بطريقة تناسب ظروف الشخص.



ماهي الcrontab و الcron jobs



الكرون تاب عبارة عن منظم للمهام على الجهاز و الكرون جوبز هي الوظائف الذي يطلبها المستخدم او مشرف النظام, وظيفتها كوظيفة الساعة المنبهة و هي عبارة عن سطور نصية تشبه الاسطر التالية:


PHP:
0 * * * * /usr/test.sh

PHP:
 0 0 * * * /etc/logs.cgi

لا تخف! سنشرح ماذا تعني هذه السطور و ستجدها سهلة للغاية.

حسناً ماذا تعني هذه الاسطر؟ في المثال اعلاه , لدينا ملف كرون تاب يحتوي على أمرين, هذا مثال فقط, يمكن للملف ان يحتوي على 3 اسطر او حتى الف سطر! و يجب ان نعرف ان كل سطر عبارة عن أمر محدد, احفظ هذه الجملة: كل امر في سطر .

لنتذكر دائماً ان الكرون تاب يمثل الساعة المنبهة, كل امر محدد بوقت معين كي ينفّذ, الجزء الاول من السطر يختص بتحديد التوقيت و الجزء الثاني هو الامر الذي سيتم تفعيله.

PHP:
0 * * * *


هذا هو التوقيت المحدد لتنفيذ الامر ال:

PHP:
/usr/test.sh

حساً لتحديد الوقت , لدينا 5 خانات , كل خانة معّرفة من اليسار لليمين كالتالي:

الدقائق من صفر الى 59

الساعات من 0 الى 23

ايام الشهر من 1 الى 31

اشهر السنة من 1 الى 12

الخانة الخامسة هي لأيام الاسبوع من صفر الى 6 حيث ان صفر يعني يوم الاحد و 1 يعني يوم الاثنين و هكذا (متى يأتي نظام عربي و يكون صفر هو ييوم الجمعة!)



الآن فهمنا معنى ال* * * * 0 وهو الدقيقة الاولى من كل ساعة في كل يوم و طوال الشهر و السنة , يعني في كل ساعة بالضبط ينفذ الامر المرتبط بهذا التوقيت!

التوقيت الثاني كان 0 0 * * * و يعني تنفيذ الامر كل يوم في تمام الثانية عشر صباحاً فالصفر الاول يعنياول دقيقة و الصفر الثاني يعني اول ساعة , و النجوم تعني ( غير محدد) فيتم تنفيذ الامر المرتبط به كل يوم في اول ساعة من اليوم.

اذن فهمنا ان :


PHP:
0 * * * * /usr/test.sh
يعني تنفيذ الامر او الاوامر الموجودة في ملف الtest.sh في تمام كل ساعة طوال السنة!

اعتقد ان الامور اصبحت اوضح الان, اذن لنجرب ان نصعب الموضوع اكثر, كيف يتم تحديد التوقيت لتشغيل ملف في الساعة 6:54 مساء يوم الجمعة طوال السنة؟

لندرس المعطيات اولا كي نعرف التوقيت بالضبط,

الدقائق: 54 (واضحة جداً)

الساعات: 18 ( و ليس 6 !! لا تقع في الفخ فالساعات من 0 الى 23 لا تنسى!)

ايام الشهر: * ( لايهمنا ,, فهو غير محدد في السؤال)

أشهر السنة: * ( ايضا لا تهمنا فهي غير محددة في السؤال)

أيام الاسبوع: 5 (يوم الاحد يساوي صفر و يوم الجمعة يساوي 5)

فيصبح الناتج :


PHP:
54 18 * * 5 /path/to/whateverscript.sh
💕