إن أداء نفس المهام مرارًا وتكرارًا، سواء يوميًا أو أسبوعيًا أو شهريًا، هي مهمة تصبح مع مرور الوقت متعبة وتتدهور، اعتمادًا على مدى تعقيدها، إلى مهمة نتركها جانبًا. الحل لهذه المشكلة هو أتمتتها قدر الإمكان. مثلما يسمح لنا Windows بأتمتة مهام معينة، يقدم لنا Linux أيضًا هذا الخيار من خلال Crontab، ولكن ليس حصريًا.
إذا أردنا أتمتة تشغيل Linux، سواء لعمل نسخة احتياطية أو لإنشاء تقارير أو لتعديل التكوين أو لأي شيء آخر، فإن الحل هو استخدام Crontab مع Cron، لأننا، على عكس Windows، نحتاج إلى تطبيقين في الأقل.
ما هو كرونتاب
Crontab هو ملف نصي حيث يتم إنشاء عمليات الأتمتة بناءً على سلسلة من المعلمات، وهو ملف نصي تتم قراءته بواسطة Cron . يتوفر كلا التطبيقين محليًا في معظم توزيعات Linux الأكثر شيوعًا، لذلك ليس من الضروري تثبيت أي مستودع على جهاز الكمبيوتر الخاص بنا لتتمكن من استخدامهما.
يقدم لنا Crontab سلسلة من البرامج النصية، واحدة في كل سطر، مما يسمح لنا بتخصيص الوقت المحدد الذي نريد فيه تنفيذ مهمة واحدة أو مهام متعددة وتكرارها بمرور الوقت. في الواقع، اسمها مشتق من الكلمة اليونانية كرونوس ، والتي تعني الوقت. يحتوي كل نص على معلومات حول التاريخ الدقيق الذي يجب تنفيذه فيه، والذي يُشار إليه بسلسلة من الأرقام. على سبيل المثال، زر. سيتم تشغيل البرنامج النصي التالي nfsfind كل يوم أحد الساعة 5:30 صباحًا
30 5 * * 0 /usr/lib/fs/nfs/nfsfind
يمثل الرقمان الأولان الوقت الذي سيتم فيه تنفيذ الأمر، الرقم الأول هو الدقيقة والثاني هو الساعة. تنسيق الوقت الذي يستخدمه Crontab هو 24 ساعة، لذلك إذا أردنا تنفيذ المهمة في الساعة 5 بعد الظهر، فسيكون هذا هو الرقم 17. تمثل العلامات النجمية جميع القيم، في حين أن الرقم 0 يتوافق مع أيام الأحد.
لا تخلط بين كرون وكرونتاب
في حين أن Crontab يسمح لنا بتنفيذ عمليات التشغيل الآلي لنظامنا، إلا أنه يتم تنفيذها، وإن لم يكن حصريًا، باستخدام تطبيق Cron، وهو تطبيق يعمل في الخلفية ويقوم بجميع المهام التي قمنا بتكوينها مسبقًا في Crontab. يستخدم هذا التطبيق وقت نظامنا لتنفيذها، لذلك من المهم، إذا كنا نستخدم جهازًا افتراضيًا، أن يكون وقت جهاز الضيف ووقت جهاز الكمبيوتر الخاص بنا هو نفسه دائمًا، لأنه بخلاف ذلك، لن يكون الوقت المبرمج صحيح.
يقوم Cron بقراءة محتوى ملف Crontab كل دقيقة، حتى نتمكن من تحريره في أي وقت لأداء المهام التي نريد تنفيذها في نفس الجلسة، دون الحاجة إلى إجبار التطبيق على قراءة محتواه مرة أخرى للبحث عن نصوص برمجية جديدة لتشغيلها .
ليس لدى جميع المستخدمين إمكانية إنشاء ملفات Crontab لأتمتة مهام النظام. لدى مسؤول النظام إمكانية السماح أو رفض هذا الخيار من خلال ملف cron.allow أو cron.den على التوالي، الملفات الموجودة في /etc/cron.do /etc/ اعتمادًا على إصدار توزيعة Linux المثبتة لدينا. معدات.
كيفية أتمتة المهام في لينكس
كما ذكرنا أعلاه، تبدأ البرامج النصية لـ Crontab بالتاريخ الذي نريد تنفيذها فيه متبوعًا بالأمر. بناء جملة Crontab هو كما يلي.
إدارة الجدول الزمني
minuto hora día-del-mes mes día-de-la-semana ruta-comandos
- دقيقة، وهذا يمكن أن يكون من 0 إلى 59
- الوقت، كما ذكرنا، يستخدم Crontab نظام 24 ساعة، وبالتالي فإن نطاق الأرقام من 0 إلى 23.
- يوم من الشهر، ليس هناك الكثير من الغموض في هذه المعلمة لأنها تتراوح من 1 إلى 31.
- الشهر من 1 إلى 12
- 1 يناير
- 2 فبراير
- 3 مارس
- 4 أبريل
- 5 مايو
- 6 يونيو
- 7 يوليو
- 8 أغسطس
- 9 سبتمبر
- 10 أكتوبر
- 11 نوفمبر
- 12 ديسمبر.
- يوم من أيام الأسبوع، من 0 إلى 6، حيث يكون يوم الأحد هو الرقم 0 على الرغم من أن بعض إصدارات Crontab تسمح أيضًا باستخدام الرقم 7. وبهذه الطريقة، يكون رمز أيام الأسبوع هو
- 0 الأحد
- 1 الاثنين
- 2 الثلاثاء
- 3 الأربعاء
- 4 الخميس
- 5 الجمعة
- 6 السبت
ولكن، بالإضافة إلى ذلك، يمكننا أيضًا استخدام العلامة النجمية (*) لتحديد جميع القيم الممكنة للمتغير. إذا أردنا تعيين قيم متعددة، فيمكننا القيام بذلك باستخدام فاصلة (،) أو نطاق من القيم التي تفصل بينها بواصلة (-). يمكننا أيضًا تعيين خطوات مختلفة باستخدام “/”.
إذا كان الأمر لا يزال غير واضح تمامًا، نعرض لك أدناه الرموز الزمنية التي يمكننا استخدامها لأداء المهام بشكل دوري حسب دوريتها.
- 0 * * * * باستخدام الرمز الزمني، سيتم تشغيل البرنامج النصي كل ساعة في الساعة.
- 0 0 * * * كل يوم سيتم تنفيذ البرنامج مرة واحدة فقط
- 0 0 * * 0 يتم تشغيل البرنامج مرة واحدة في الأسبوع
- 0 0 1 * * سيتم تنفيذه مرة واحدة في الشهر
- 0 0 1 1 * سيتم تنفيذ البرنامج مرة واحدة في السنة
بمجرد أن نكون واضحين بشأن كيفية عمل جدولة المهام في Crontab، أول شيء سنفعله هو إنشاء الملف حيث سنقوم بإنشاء جميع العمليات التي نريد أتمتتها باستخدام الأمر التالي
crontab nombre-archivo
إذا لم نرغب في إنشاء واحدة جديدة، أو قمنا بإنشائها بالفعل ونريد تعديلها، فإننا نستخدم هذا الأمر
crontab -e
إذا أردنا حذف ملف Crontab الذي تم إنشاؤه
crontab -d
باستخدام الأمر التالي، يمكننا إدراج جميع المهام المضمنة في ملف Crontab
crontab -d
يمكن لمسؤولي النظام الحد من استخدام عمليات أتمتة النظام عن طريق تحرير ملفات cron.allow أو cron.den، الموجودة في /etc/cron.d/ أو /etc/ إذا لم نقم بتعديل موقعها مسبقًا.
أتمتة المهام
لتحرير ملف Crontab الذي قمنا بإنشائه، سنستخدم محرر النصوص الموجود في جميع توزيعات Linux، على الرغم من أنه يمكننا أيضًا تحريره مباشرةً من Crontab عن طريق إضافة المتغير -e.
nano nombrearchivo
نقوم بإدخال الرمز الرقمي مصحوبًا بالعلامات النجمية والبرنامج النصي الذي نريد تنفيذه. بعد ذلك، نحتاج إلى منح Cron الأذونات لتشغيله، وإلا فلن يعرف عنه ولن يتمكن أبدًا من تشغيله. للقيام بذلك، سوف نستخدم الأمر
chmod ugo+x nombrearchivo
في البداية، لا يبدو استخدام Crontab لأتمتة المهام أمرًا سهلاً على الإطلاق ويذكرنا بحاجة Linux (الشائعة تقريبًا) إلى اللجوء إلى سطر الأوامر في كل شيء تقريبًا، مما يحد من قدرة المزيد من المستخدمين على اعتماد Linux كنظام تشغيل على على نهج يومي. .
يستخدم برنامج جدولة مهام Windows واجهة رسومية ليس من السهل جدًا استخدامها دون المعرفة اللازمة، ومع ذلك، فهي أكثر سهولة بكثير مما يقدمه لنا Linux من خلال سطر الأوامر.
مثال عمل Crontab وCron
أول شيء يجب علينا القيام به لأتمتة المهام في Linux هو إنشاء الملف الذي سنتضمن فيه جميع الأوامر التي نريد تنفيذها على الكمبيوتر في الوقت الذي نقوم فيه بتكوينه. في هذا المثال، سنقوم بإنشاء ملف “الاختبار” الذي سيكون مسؤولاً عن حذف جميع الملفات والمجلدات الفارغة الموجودة في دليل tmp. للقيام بذلك، سوف نقوم بإدخال الأمر التالي.
crontab prueba
بعد ذلك، يجب علينا إدخال الأمر (أو الأوامر التي تفصل بينهما بفاصلة منقوطة “؛” بدون علامتي الاقتباس). في هذا المثال. سنستخدم Crontab لحذف الملفات الموجودة في المجلد tmp.
find /tmp -type f -empty -delete
بعد ذلك، نقوم بتحرير الملف لإضافة الجدول، أي عندما نريد تنفيذ المهام التي أدخلناها في الملف.
crontab -e
لكي يتم تنفيذه كل يوم في تمام الساعة 10 صباحًا يجب إضافة 0 10 * * * قبل البرنامج النصي، مع ترك السطر كما يلي
0 10 * * * find /tmp -type f -empty -delete
إذا أردنا تشغيله في وقت آخر. فما علينا سوى تعديل الرقم 10 إلى الوقت (بتنسيق 24 ساعة) الذي نريد تشغيله فيه. يمكننا أيضًا استخدام رموز الوقت التي أظهرناها في قسم إدارة الجدول لتكوينه. أخيرًا، نستخدم الأمر التالي حتى يتمكن Cron من تشغيل ملف الأتمتة الذي أنشأناه.
[code]chmod ugo+x prueba
بدائل لكرون
كما ذكرنا في الأقسام السابقة فإن Cron هو المسؤول عن تنفيذ الأوامر التي قدمناها سابقاً في Crontab. تعد Cron أداة مثالية للفرق التي تعمل 24 ساعة يوميًا. على الرغم من أنه يمكننا أيضًا تكييفها مع جدول عملنا، حتى لو كان ذلك يستنزف الموارد من الفريق أثناء تنفيذ المهام. إذا كنا نبحث عن خيارات أبسط لـ Cron، فسنعرض لك أدناه بعضًا من أفضل البدائل.
أناكرون
يسمح لنا Anacron بجدولة التنفيذ الآلي للمهام في يوم أو أسبوع أو شهر في أي وقت. إذا تم إيقاف تشغيل الكمبيوتر، ففي المرة التالية التي نقوم فيها بتشغيل الكمبيوتر، سيتم تنفيذ المهمة التي أدخلناها مسبقًا في Crontab. مع Cron، إذا تم إيقاف تشغيل الكمبيوتر في التاريخ المحدد، فلن يتم تنفيذ المهمة عندما نقوم بتشغيل الكمبيوتر. يتوفر Anacron في معظم توزيعات Linux ويمكننا تثبيته على الكمبيوتر باستخدام الأمر التالي.
sudo apt install anacron
كروني
يقدم لنا Cronie تجربة أكثر اكتمالاً بكثير من Cron. ومجموعة صغيرة من التطبيقات (بما في ذلك Anacron) التي يمكننا من خلالها برمجة سير العمل بسرعة وسهولة من خلال Crontab. على عكس Anacron، لتثبيت Cronie فهو غير متوفر في مستودعات Linux. لذلك يجب علينا زيارة موقعه على GitHub لتنزيله، أو استخدام الأمر التالي.
wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz