الأتمتة في لينكس: من cron وBash إلى Ansible وsystemd

آخر تحديث: أبريل 9 2026
نبذة عن الكاتب: تكنوديجيتال
  • يوفر نظام لينكس نظامًا بيئيًا متكاملًا لأتمتة المهام: تغطي نصوص Bash البرمجية، و cron، و anacron، و at، ومؤقتات systemd كل شيء بدءًا من عمليات التنفيذ لمرة واحدة وحتى المهام المعقدة والمتكررة.
  • يُعد الاستخدام الصحيح لـ crontabs ومتغيرات البيئة والسجلات وآليات القفل مثل flock أمرًا أساسيًا لأتمتة موثوقة وسهلة الصيانة.
  • يتم تعزيز الأمان والأداء من خلال أتمتة عناصر التحكم: تقوية SSH، وجدران الحماية، وSELinux، وتنظيف الحزم والخدمات، وملفات تعريف التحسين مثل tuned.
  • تتيح لك أدوات التنسيق مثل Ansible توسيع نطاق هذه الأتمتة لتشمل عشرات أو مئات الخوادم، مما يضمن تكوينات متسقة وقابلة للتكرار.

الأتمتة في لينكس

إذا كنت تستخدم نظام لينكس يومياً، فستدرك عاجلاً أم آجلاً أن إن تكرار نفس المهام مراراً وتكراراً يُعد مضيعة هائلة للوقت.النسخ الاحتياطي اليدوي، وتنظيف الملفات المؤقتة، وتحديث الحزم، وفحوصات حالة النظام... كل ذلك يمكن تفويضه إلى النظام ليحدث تلقائيًا بينما تقوم بأشياء أكثر إثارة للاهتمام (أو تنام بسلام).

تم تصميم نظام لينكس البيئي لهذا الغرض منذ عقود: أتمتة المهام بشكل موثوق ومرن وآمنبدءًا من أوامر cron وat الكلاسيكية، مرورًا بـ anacron، وصولًا إلى مؤقتات systemd وAnsible المتطورة، ستجد مجموعة واسعة من الأدوات التي تغطي كل شيء من أبسط البرامج النصية إلى إدارة مئات الخوادم. في هذا الدليل، سنجمع كل هذه الأدوات ونجعلها عملية من خلال شروحات مفصلة وأمثلة واضحة.

ماذا تعني الأتمتة في نظام لينكس، ولماذا يجب أن تهتم بها؟

عندما نتحدث عن الأتمتة في لينكس، فإننا نشير إلى لجدولة تنفيذ الأوامر أو البرامج النصية أو الخدمات دون تدخل بشريسواء كان ذلك لمرة واحدة أو بشكل منتظم، ينطبق هذا على كل من جهاز الكمبيوتر المحمول الشخصي ومجموعة خوادم الإنتاج.

تتمتع الأتمتة بعدة مزايا واضحة: فهي تقلل من الخطأ البشري عن طريق إلغاء المهام المتكررة، وتوفر الوقت، وتضمن ذلك تُنفذ المهام الحرجة دائمًا بنفس الدقة ويتيح ذلك إدارة موحدة للنظام. يتميز نظام لينكس بشكل خاص في هذا المجال لأنه صُمم منذ البداية للعمل مع البرامج النصية وأدوات سطر الأوامر التي يمكن دمجها بسهولة مع بعضها البعض.

صحيح أن البعض يخشى أن يؤدي الإفراط في الأتمتة إلى خلق تبعية تكنولوجية أو إلى فقدان المعرفة اليدوية، ولكن عند استخدامه بشكل صحيح، فإنه يوفر الوقت للقيام بمهام ذات قيمة أعلى.: تصميم معماري، تحليل أمني، تحسين العمليات أو التطوير المباشر.

في العمليات اليومية، تعتمد الأتمتة في نظام لينكس عادةً على عدة ركائز: نصوص باش، و cron/anacron، و at، ومؤقتات systemd، وأدوات إدارة التكوين مثل Ansibleكل منها يغطي نوعًا مختلفًا من الاحتياجات، وهو ما سنراه بالتفصيل.

كرون: النموذج الكلاسيكي الأساسي للأتمتة الدورية

المهام المجدولة في لينكس

إذا كانت هناك أداة واحدة يجب على كل مسؤول نظام لينكس أن يعرفها عن ظهر قلب، فهي cron. Cron هو برنامج يعمل في الخلفية ويقوم بتشغيل الأوامر أو البرامج النصية في أوقات محددة.: كل ​​دقيقة، كل ساعة، يومياً، أسبوعياً، شهرياً، أو في تركيبات أكثر تعقيداً.

يأتي اسمها من كرونوس، الوقت باليونانيةيُستخدم Vixie Cron في أنظمة يونكس منذ أواخر سبعينيات القرن الماضي. وتستخدم معظم التوزيعات الحديثة (ديبيان، أوبونتو، فيدورا، وغيرها) نسخةً ما من Vixie Cron، الذي خضع لاختبارات مكثفة ويتميز بالاستقرار. ويُعدّ Vixie Cron مكونًا أساسيًا في بيئات الإنتاج، لا يقل أهميةً عن نواة النظام نفسها.

يتيح لك استخدام cron أتمتة أشياء مثل النسخ الاحتياطي الليلي، وتدوير السجلات، ومهام المراقبة، وبرامج الصيانة، أو إنشاء التقاريرالفلسفة بسيطة: أنت تحدد ما يجب تشغيله ومتى، ويتولى cron الباقي، بدون نوافذ رسومية أو قصص.

علاوة على ذلك، يتوفر برنامج cron على أي نظام شبيه بنظام Unix تقريبًا، لذا ما تتعلمه باستخدام cron مفيد للعديد من البيئات المختلفةمن خادم افتراضي خاص رخيص إلى خادم مؤسسي.

بنية نظام لينكس كرون: البرامج الخفية، وجداول بيانات كرون، والمجلدات الخاصة

لاستخدام Cron بفعالية، من المفيد فهم كيفية تنظيمه داخليًا. بشكل عام، يتم تنظيم النظام حول برنامج crond الخفي، وملفات crontab، والعديد من الدلائل الخاصة. يتم إدارتها بواسطة النظام.

يبدأ برنامج cron الخفي مع بدء تشغيل النظام (عادةً عبر systemd أو init المقابل) و يبقى مستيقظاً، ويتحقق كل دقيقة من وجود مهام يجب تفعيلها.عندما يكتشف أن سطرًا ما يطابق الدقيقة الحالية، فإنه يقوم بتشغيل الأمر المرتبط به في عملية shell جديدة.

يمكن لكل مستخدم للنظام أن يمتلك ملف جدولة خاص به، يُعرف باسم crontab. يتم تخزين ملفات crontab الخاصة بالمستخدم عادةً في مسارات مثل /var/spool/cron/ أو /var/spool/cron/crontabs/بحسب التوزيعة. من المهم عدم تعديلها يدويًا، بل من خلال الأمر. كرونتاب، والذي يتحقق من صحة بناء الجملة ويخطر البرنامج الخفي بوجود تغييرات.

بالإضافة إلى جداول مهام المستخدم، هناك آليات كرون المصممة للنظامملف /etc/crontab، والمجلد /etc/cron.d/، والمجلدات الدورية مثل /etc/cron.hourly و/etc/cron.daily و/etc/cron.weekly و/etc/cron.monthly. تحتوي هذه المجلدات الأخيرة على نصوص برمجية يقوم النظام بتشغيلها دوريًا باستخدام أدوات مثل anacron أو run-parts.

الفكرة العامة هي أن يتغذى برنامج cron daemon على هذه الملفات والمجلدات.ويتحقق النظام كل دقيقة من وجود أي مهام تحتاج إلى تنفيذ. هذه البنية المعيارية تُسهّل على حزم النظام تثبيت مهامها الخاصة دون التأثير على الإعدادات العامة.

صيغة crontab: الحقول الخمسة وعواملها

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

يقبل كل حقل القيم الرقمية والنطاقات والقوائم المفصولة بفواصل والخطوات مع الشرطة المائلة، وحتى علامة النجمة النموذجية للإشارة إلى "جميع القيم الممكنة". بفضل هذه العوامل، يمكنك التعبير عن أنماط معقدة دون الحاجة إلى كتابة عشرين سطراً مختلفاً.

بالإضافة إلى ذلك، تقبل العديد من تطبيقات cron اختصارات خاصة مثل @daily و @hourly و @weekly و @monthly و @reboot وما شابه ذلك. تعمل هذه الأسماء المستعارة على تبسيط المهام الشائعة، بحيث لا تحتاج حتى إلى تذكر ترتيب الحقول.

عند العمل مع ملف /etc/crontab أو مع ملف /etc/cron.d/، تمت إضافة حقل سادس لتحديد المستخدم الذي سيتم تشغيل المهمة تحته.هذا أمر أساسي لمهام النظام التي تحتاج إلى تشغيلها كحساب الجذر أو حسابات الخدمة الأخرى.

إن حفظ هذه الصيغة والتدرب عليها من خلال بعض الأمثلة الواقعية هو ما يصنع الفرق بين استخدام cron بشكل أخرق واستخدامه بنجاح. أتمتة نظيفة، سهلة القراءة، وسهلة الصيانة على مر الزمن.

إدارة crontab الاحترافية: التحرير، والسرد، والتحكم في الإصدارات

القيادة كرونتاب إنها الواجهة الرسمية للعمل مع المهام المجدولة للمستخدم. من خلالها، يمكنك إنشاء وتعديل وعرض وحذف جدول المهام (crontab)، والأهم من ذلك: تتجنب بذلك التعامل المباشر مع الملفات الداخلية للنظاممما يقلل من الأخطاء ومشاكل الأذونات.

من الممارسات الموصى بها بشدة في البيئات الخطيرة ما يلي: احتفظ بمحتويات crontab في ملفات نصية ذات إصدارات باستخدام Gitبهذه الطريقة يمكنك مراجعة من قام بتغيير ماذا ومتى، ومقارنة الإصدارات القديمة، واستعادة التكوين السابق بسرعة في حالة حدوث عطل ما بعد التعديل.

من الممكن أيضًا تثبيت جدول مهام (crontab) من ملف خارجي، وهو ما يتناسب تمامًا مع إجراءات النشر الآلية أو البنية التحتية كبرنامجبهذه الطريقة، بدلاً من التحرير اليدوي على كل خادم، يمكنك إرسال نفس الملف إلى الجميع وتطبيق التغييرات بشكل موحد.

في الواقع العملي، يقوم المسؤولون ذوو الخبرة عادةً بتوثيق كل بند من بنود الميزانية بتعليق مسبق، وتجميع المهام ذات الصلة، و حافظ على تسمية واضحة ومسار محدد للبرامج النصية التي تُستخدم في كرون. هذا الانضباط يجعل الحياة أسهل بكثير بعد أشهر.

  كيفية عكس وبث شاشتك في نظام لينكس باستخدام برنامج Deskcreen

أمثلة شائعة للمهام المؤتمتة باستخدام كرون

لفهم إمكانيات كرون، يكفي استعراض حالات الاستخدام النموذجية. ومن أكثرها شيوعًا ما يلي: الصيانة الدورية للنظام: تدوير وضغط السجلات، وتنظيف الملفات المؤقتة، وإعادة إنشاء فهارس البحث، أو حذف النسخ الاحتياطية القديمة.

هناك كتلة أخرى شائعة جدًا وهي مهام المراقبةمن الشائع نسبياً تشغيل البرامج النصية التي تتحقق من استخدام القرص، وحمل النظام، وحالة خدمات معينة أو استهلاك الذاكرة، وإذا اكتشفت عتبة خطيرة، فإنها تقوم بإنشاء سجل، أو إرسال بريد إلكتروني، أو إطلاق تنبيه إلى نظام خارجي.

في مجال تطوير البرمجيات وقواعد البيانات، يتمتع نظام Cron بإمكانيات كبيرة أيضًا. على سبيل المثال، تُستخدم المهام المجدولة لـ قم بإجراء نسخ احتياطية لقاعدة البيانات، أو تشغيل البرامج النصية التي تعيد إنشاء المقاييس، أو تصدير التقارير إلى ملفات CSV.أو حتى لتنسيق مسارات معالجة البيانات الصغيرة.

يتم دعم كل هذا في الغالب بواسطة نصوص Bash أو لغات أخرى تقوم بالعمل الفعلي، بينما يتولى cron مهمة "متى". يحافظ هذا الفصل بين المسؤوليات على نظافة crontab وعلى تغليف منطق العمل في ملفات منفصلة.

متغيرات البيئة في كرون: المصدر الكلاسيكي للأخطاء

أحد أكثر الأخطاء شيوعاً عندما يبدأ شخص ما باستخدام cron هو افتراض أن المهام يتم تنفيذها تلقائياً. نفس بيئة العمل عند استخدامك للمحطة الطرفية التفاعليةلا شيء أبعد عن الحقيقة من ذلك: يقوم cron بتشغيل الأوامر في سياق محدود للغاية، مع مسار محدود وبدون تخصيصات shell الخاصة بك.

هذا يعني أن العديد من البرامج النصية التي تعمل بشكل مثالي عند تشغيلها يدويًا تفشل عند تشغيلها باستخدام cron لأن لا يمكنهم العثور على الملفات الثنائية، ولا يمكنهم تحديد المسارات النسبية، أو أنهم يعتمدون على متغيرات بيئية غير موجودة.الحل بسيط: قم بتحديد PATH وأي متغيرات أخرى ضرورية بشكل صريح داخل crontab نفسه أو في البرنامج النصي.

من الشائع أيضاً التحكم في سلوك البريد الإلكتروني باستخدام المتغير مايلتوبحيث تصل مخرجات المهام القياسية إما إلى صندوق بريد المستخدم أو يتم تجاهلها. في البيئات التي لا يتم فيها تهيئة نظام البريد، يُنصح بإعادة توجيه المخرجات إلى ملفات في /dev/null لمنع تراكمها الصامت.

باختصار، عند تصميم مهام cron، يجب أن تفكر فيها على أنها تعمل في نوع من "البيئة البسيطة" وأن يجب تحديد كل ما يحتاجه البرنامج النصي الخاص بك بشكل صريح.

/etc/crontab و /etc/cron.dy عبارة عن أدلة دورية

بالإضافة إلى جداول المهام الفردية، يوفر نظام لينكس عادةً ما يوجد ملف crontab الخاص بالنظام في المسار /etc/crontabيختلف هذا الملف عن ملفات المستخدم في أنه يتضمن حقلاً إضافياً للإشارة إلى الحساب الذي سيتم تشغيل الأمر من خلاله، وهو أمر أساسي للمهام العالمية.

يُعرّف هذا الملف عادةً، من بين أمور أخرى، تنفيذ البرامج النصية في /etc/cron.hourly و /etc/cron.daily و /etc/cron.weekly و /etc/cron.monthlyفي العديد من الأنظمة، يتم تفويض عمليات التنفيذ هذه إلى أدوات مثل anacron، والتي تضمن تنفيذ المهام حتى لو لم يتم تشغيل الكمبيوتر في الوقت المحدد.

الدليل /الخ/كرون.د/ يحتوي هذا المجلد على ملفات crontab إضافية، تُثبّت عادةً بواسطة حزم النظام أو أدوات خارجية. يتبع كل ملف نفس تنسيق /etc/crontab، بما في ذلك حقل المستخدم. هذه هي الطريقة المُوصى بها لـ أضف مهام النظام دون المساس بملف crontab الرئيسي.يؤدي ذلك إلى تحسين الصيانة ومنع حدوث تعارضات أثناء التحديثات.

تتمثل آلية العمل النموذجية في أن برنامج cron daemon يقوم بفحص هذه الملفات بشكل دوري، وبالتزامن مع anacron أو run-parts، يقوم بتشغيل البرامج النصية الموجودة في الدلائل الدورية في أوقاتها المقابلة.بصفتك مسؤول النظام، ما عليك سوى ترك البرامج النصية الخاصة بك مُعدة بشكل صحيح في المكان المناسب.

أناكرون: عندما لا يكون الجهاز قيد التشغيل دائمًا

من القيود المعروفة لـ cron أنه إذا تم إيقاف تشغيل الكمبيوتر عندما يحين وقت تشغيل مهمة ما، فسيتم فقدان هذا التنفيذ. تم إنشاء أناكرون تحديداً لسد هذه الفجوة.وخاصة على الأجهزة التي لا يتم تشغيلها على مدار الساعة طوال أيام الأسبوع، مثل أجهزة الكمبيوتر المحمولة أو أجهزة الكمبيوتر المكتبية.

لا يعتمد نظام Anacron كثيرًا على التاريخ والوقت المحددين، بل على عدد الأيام التي انقضت منذ آخر تنفيذ لمهمة ما. عند بدء تشغيل النظام، فإنه يتحقق من المهام اليومية أو الأسبوعية أو الشهرية التي تم تخطيها. ويعيد برمجتها لتشغيلها مع تأخير صغير قابل للتكوين.

يُعد حقل التأخير هذا بالدقائق مهمًا لأنه يمنع ذلك تشغيل جميع المهام المعلقة دفعة واحدة عند بدء التشغيل.قد يؤدي ذلك إلى إرهاق النظام. بدلاً من ذلك، يتم تنفيذ العمليات بشكل متدرج، مما يسمح للفريق بالبدء تدريجياً.

في العديد من الأنظمة الحديثة، إذا كان برنامج anacron موجودًا، فإنه يكون مسؤولاً عن البرامج النصية الموجودة في /etc/cron.daily و /etc/cron.weekly و /etc/cron.monthly، بينما يتولى cron المهام الأكثر دقة وتكرارًا. هذا المزيج يجعل من الممكن ينبغي أن تكون أنظمة الأتمتة قوية حتى على الآلات التي يتم إيقاف تشغيلها بشكل متكرر..

أمر "at": تنفيذ لمرة واحدة في المستقبل

بينما يركز كل من cron و anacron على المهام المتكررة، فإن الأمر يغطي هذا المثال حالة بسيطة ومفيدة للغاية: جدولة أمر ليتم تشغيله مرة واحدة فقط في وقت محدد في المستقبل. يشبه الأمر ترك ملاحظة ملصقة على النظام لجعله يقوم بشيء ما "غدًا الساعة 9:30" أو "بعد ساعتين".

تتميز صيغة الأمر `at` بسهولة استخدامها وتسمح بالتعبير عن الوقت بشكل طبيعي. بمجرد تحديد المهمة، يقوم النظام بتخزينها في قائمة انتظار وينفذها في الوقت المناسب.بعد ذلك، تختفي المهمة، على عكس cron، الذي يحتفظ بالمهمة حتى تقوم بتعديلها أو حذفها.

تُعد هذه الأداة ملائمة بشكل خاص لـ مهام محددة لا تريد نسيانها ولكن لا يبدو من المنطقي أن تكون مهام متكررة: عمليات إعادة التشغيل المجدولة، أو عمليات الصيانة التي تلي فترة عمل محددة، أو الاختبارات التي يجب تشغيلها في وقت محدد.

بالإضافة إلى البرامج النصية الجيدة، يصبح الأمر `at` بمثابة حرف بدل أنيق ينسى العديد من المستخدمين وجوده، ولكنه يمكن أن يبسط ذلك حياتك اليومية بشكل كبير عندما لا يكون إنشاء إدخال cron جديد أمرًا مجديًا..

مؤقتات systemd: البديل الحديث لـ cron

في التوزيعات الحديثة التي تستخدم systemd (مثل Ubuntu و Debian و Fedora و CentOS وغيرها الكثير)، توجد طريقة أخرى لجدولة المهام: مؤقتات نظام systemdبدلاً من الاعتماد على crontabs، هنا تقوم بتعريف وحدات الخدمة (.service) ووحدات المؤقت (.timer) التي يديرها systemd تمامًا مثل الخدمات الأخرى.

تتميز مؤقتات Systemd لأنها تتكامل هذه الميزات بشكل مثالي مع بقية نظام systemd البيئييمكنك عرض الحالة والسجلات والتبعيات باستخدام الأدوات المألوفة نفسها (journalctl، systemctl، إلخ). يُعد هذا مثاليًا للمهام المعقدة التي تحتاج إلى البدء بعد الخدمات الأخرى، أو تطبيق سياسات إعادة التشغيل، أو الاحتفاظ بسجلات مفصلة.

يتكون المؤقت النموذجي من ملف خدمة يحدد ما يتم تنفيذه (نص برمجي، ملف تنفيذي، إجراء محدد) وملف مؤقت يحدد متى وكم مرة يتم تشغيله. يوفر نظام Systemd تعبيرات تقويم مرنة وخيارات مثل الاستمرارية.والتي تضمن تنفيذ العمل بعد الإغلاق إذا تم "تجاوزه".

عند الاختيار بين مؤقتات cron و systemd، فإن القاعدة العامة الجيدة هي أن تسأل نفسك ما إذا كنت بحاجة إلى السجلات المتكاملة، أو تبعيات الخدمة، أو الثبات المتقدمإذا كانت الإجابة بنعم، فعادةً ما يكون استخدام المؤقت أفضل. أما بالنسبة للمهام البسيطة والعامة، فيظل برنامج cron خيارًا موثوقًا به وفعالًا تمامًا.

  10 جوانب رئيسية: ما هو نظام المعلومات الإدارية؟

في نهاية المطاف، لا يوجد صراع بين النهجين: يمكنك استخدام cron للمهام البسيطة والمؤقتات للمهام المعقدة.، دون أي مشكلة في التعايش في نفس النظام.

الأمن والتحكم في الوصول في كرون

بما أن برنامج cron قادر على تنفيذ أي أمر تقريبًا بصلاحيات المستخدم المناسبة، فإن الأمن يمثل مسألة بالغة الأهمية. يتضمن نظام لينكس آليات التحكم المستندة إلى ملفي /etc/cron.allow و /etc/cron.denyوالتي تحدد المستخدمين الذين يمكنهم استخدام cron.

بحسب الإعدادات، يمكن للنظام السماح بتشغيل cron فقط لأولئك الموجودين في القائمة البيضاء، أو منعه صراحةً لأولئك الموجودين في القائمة السوداء. تُعد إدارة هذه الملفات بشكل صحيح أمرًا حيويًا في بيئات المستخدمين المتعددين أو الخوادم المكشوفة.حيث لا يكون من المرغوب فيه لأي حساب أن يستهلك الموارد بمهام مصممة بشكل سيئ.

بالإضافة إلى ذلك، يُنصح بتقييد البرامج النصية التي يتم تشغيلها كجذر ومراجعة التعليمات البرمجية لأي مهمة مجدولة ذات امتيازات عالية بعناية. قد يؤدي خطأ بسيط في برنامج cron النصي الذي يتمتع بصلاحيات المسؤول إلى فتح ثغرة أمنية. خطير جداً.

في سياقات أكثر تقدماً، يمكن لأدوات مثل SELinux أو AppArmor إضافة طبقات إضافية من التحكم في ما يمكن أن تفعله العمليات التي يتم تشغيلها بواسطة cron، مما يعزز الوضع الأمني ​​للنظام بشكل أكبر.

تصحيح أخطاء مهام cron: المنهجية والأخطاء الشائعة

عندما لا تؤدي مهمة مجدولة ما تتوقعه، فإن أفضل استراتيجية ليست "التنقل بلا هدف"، بل الاستمرار. منهجية تشخيصية صغيرةتتمثل الخطوة الأولى في التحقق من أن برنامج cron daemon نشط ومفعل بالفعل، باستخدام أدوات الخدمة الخاصة بالتوزيعة.

بعد ذلك ، عليك أن تفعل راجع سجلات النظام وسجلات cron المحددة. نعم، إنها موجودة. ستجد غالبًا أخطاء في بناء الجملة في ملف crontab، أو مشاكل في الأذونات، أو حالات فشل في تنفيذ البرامج النصية لم تكن واضحة على الفور.

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

من بين الأخطاء الأكثر شيوعًا: نسيان إعادة توجيه الإخراج القياسي وإخراج الأخطاء، واستخدام المسارات النسبية التي لا معنى لها عند تشغيل cron للبرنامج النصي، والافتراض بأن PATH يتضمن أدلة غير موجودة بالفعل، أو عدم مراعاة أن مثيلات متعددة لنفس المهمة قد تتداخل في الوقت.

يتضمن تصحيح هذه المشاكل حدد كل شيء بشكل صريح، واستخدم المسارات المطلقة، وأضف سجلات تصحيح الأخطاء، واحمِ المهام من التنفيذ المتزامن. إذا كان هذا الاحتمال موجودا.

الممارسات المهنية الجيدة مع كرون

على مر السنين، استخلص مجتمع مسؤولي الأنظمة سلسلة من التوصيات التي تُحدث الفرق بين "إعداد أربع مهام مجدولة بشكل عشوائي" و إدارة الأتمتة باحترافية.

القاعدة الذهبية هي قم دائمًا بإعادة توجيه مخرجات كل مهمة إلى ملف سجل /dev/nullإذا لم تفعل ذلك، فسيحاول cron إرسال هذا الناتج عبر البريد الإلكتروني إلى المستخدم، مما قد يؤدي إلى امتلاء صناديق بريد المستخدم الجذر أو ببساطة فقدانها إذا لم يتم تكوين نظام البريد، مما يجعل التشخيص صعبًا للغاية.

ومن الممارسات الرئيسية الأخرى ما يلي: قم بتجميع المنطق في نصوص برمجية منفصلة بدلاً من كتابة أوامر طويلة جدًا مباشرة في ملف crontabبهذه الطريقة يمكنك إنشاء نسخ من البرنامج النصي، واختباره يدويًا، وتوثيقه، وإعادة استخدامه بسهولة أكبر.

لتجنب المشاكل المتداخلة، تُستخدم أدوات مثل قطيع تتيح هذه التقنية تطبيق آليات حظر بسيطة: فإذا كانت إحدى نسخ المهمة لا تزال قيد التشغيل، فإن النسخة التالية إما تنتظر أو تتوقف دون تنفيذ. وهذا أمر بالغ الأهمية لمهام النسخ الاحتياطي أو معالجة البيانات الضخمة.

وأخيرًا، من الجيد إضافة تعليق لكل سطر من crontab مع وصف واضح والاحتفاظ بالملف. تحت نظام التحكم في الإصدارات باستخدام Git أو أنظمة مماثلةمع مرور الوقت (أو تغيير المسؤول)، ستصبح تلك التعليقات وسجل التغييرات بمثابة كنز ثمين.

برمجة باش: المحرك الذي يُشغّل عمليات التشغيل الآلي

كل ما سبق لا يفي بالغرض إن لم يكن لدينا شيء مفيد لتشغيله، وهنا يأتي دور سكربتات باش. السكربت ببساطة هو... ملف نصي يحتوي على أوامر ينفذها النظام واحداً تلو الآخركما لو كنت تكتبها بنفسك، ولكن دون أن تتعب.

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

على المستوى العملي، يبدأ نص باش النموذجي بالسطر #! / بن / باش لتحديد الصدفة التي يجب أن تفسرها، وتحديد المتغيرات، وتنفيذ الأوامر، واستخدام الشروط والحلقات، وإضافة رسائل إعلامية باستخدام echo حتى نعرف ما يحدث.

توجد برامج نصية بسيطة للغاية تنقل بضعة ملفات فقط، وأخرى أكثر تعقيداً بكثير، تقوم بعمل نسخ احتياطية كاملة، وإنشاء تقارير، و يتم دمجها مع cron أو at لتشغيلها تلقائيًا بين الحين والآخر.

يكمن السر في أن أي مهمة تتكرر كثيراً في الطرفية هي مرشح مثالي لتصبح نصاً برمجياً، مما يوفر لك الوقت ويجنبك الأخطاء السخيفة على المدى المتوسط.

مثال عملي: النسخ الاحتياطي اليومي باستخدام Bash و cron

من الحالات الشائعة جداً النقص قم بعمل نسخة احتياطية يومية لمجلد مهم معينباستخدام Bash، يتم حل هذه المشكلة في بضعة أسطر، حيث يتم إنشاء دليل بالتاريخ الحالي وتضمين البيانات ذات الصلة بداخله.

المنطق العام عادة ما يكون كالتالي: إنشاء سلسلة نصية تحتوي على تاريخ اليوم، وإنشاء مسار وجهة يتضمنه، وإنشاء هذا الدليل إذا لم يكن موجودًا، ونسخ بياناتك المهمة بشكل متكرر، وأخيرًا، عرض رسالة تشير إلى اكتمال النسخ الاحتياطي بنجاح.

وإذا قمت أيضاً بدمج ذلك مع تشفير النسخ الاحتياطية، فإن استخدام tar/gz على نظام لينكس أو النقل الآمن إلى خادم آخر عبر شبكة VPN أو أنفاق SSH، يمكنك وضع استراتيجية نسخ احتياطي جيدة دون عناء كبير، بالاعتماد فقط على أدوات لينكس الكلاسيكية.

يمكنك حفظ هذا البرنامج النصي في مجلد مثل /usr/local/sbin أو في مجلد البرامج النصية الخاص بك، ومنحه صلاحيات التنفيذ. ثم استخدم cron لتشغيل البرنامج. التنفيذ التلقائي في وقت لا يكون فيه الخادم تحت ضغطعلى سبيل المثال، كل ليلة عند منتصف الليل.

وإذا قمت أيضاً بدمج ذلك مع تشفير النسخ الاحتياطية أو النقل الآمن إلى خادم آخر عبر VPN أو أنفاق SSH، يمكنك وضع استراتيجية نسخ احتياطي جيدة دون عناء كبير، بالاعتماد فقط على أدوات لينكس الكلاسيكية.

الأتمتة الأساسية باستخدام نصوص باش: الخطوات الأولى

إذا كنت مبتدئًا في كتابة البرامج النصية، فإن أفضل شيء تفعله هو أن تأخذ الأمر خطوة بخطوة. أولاً، قم بإنشاء ملف فارغ، وقم بتحريره باستخدام محرر النصوص المفضل لديك، وأضف بضعة أسطر من الأوامر.احفظه، وامنحه صلاحيات التنفيذ، ثم اختبره.

تتكون التمارين الأولى عادةً من أتمتة المهام البسيطة مثل سرد الملفات، ونقلها إلى مجلدات محددة، أو تنظيف الدلائل المؤقتة.سيساعدك هذا على التعرف على بناء الجملة والمتغيرات والأذونات ورسائل الإخراج.

لاحقًا، يمكنك التفكير في البرامج النصية التي تسجل التاريخ والوقت في سجل كل فترة، أو تقوم بعمل نسخ مضغوطة من /etc/ في الليل، أو تتحقق من مساحة القرص وترسل تنبيهًا عند تجاوز نسبة معينة من الاستخدام.

  PowerShell و WMI و CIM لأتمتة متقدمة في أنظمة ويندوز

من العادات الصحية جداً استخدام استخدام أداة echo لتصحيح الأخطاءبهذه الطريقة، يطبع البرنامج النصي الخطوة التي ينفذها، وقيم المتغيرات الرئيسية، وما إذا كان قد واجه أي مشاكل. وهذا يُسهّل بشكل كبير اكتشاف الأخطاء المنطقية.

مع الممارسة، ستنتهي ببناء "مكتبة شخصية" صغيرة من البرامج النصية التي تصبح مساعديك الصامتين، جاهزة للتشغيل بمفردها بفضل مؤقتات cron أو at أو systemd.

الأتمتة والأمان: تعزيز خادم لينكس

في كل مرة تقريبًا يتم فيها مناقشة الأتمتة على الخوادم الجادة، يتحول الحديث حتمًا إلى الأمن. تتضمن عملية تعزيز خادم لينكس تقليل مساحة الهجوم الخاصة به، وتطبيق أفضل الممارسات، وأتمتة ضوابط الأمان. حتى لا يعتمدوا على التذكر "باليد".

أول كتلة رئيسية هي إدارة حسابات المستخدميوصى بتجنب أسماء المستخدمين العامة أو الواضحة (مثل "admin" أو "oracle")، واستخدام أسماء أقل قابلية للتنبؤ، وإنشاء سياسات كلمات مرور قوية مع انتهاء صلاحية دورية، وتعديل نطاقات UID بحيث لا يكون من السهل تخمينها.

هناك جانب آخر يجب مراعاته وهو حزم البرامج المثبتة. فكلما زاد عدد البرامج غير الضرورية، اتسعت رقعة تعرضك للهجمات. لذا، من الممارسات الجيدة الانتباه إلى هذا الأمر. عرض الحزم المثبتة، وإزالة الحزم غير المستخدمة، ومراقبة التبعيات. لتجنب تعطيل الخدمات الحيوية عن غير قصد.

كما يجب عليك فحص الخدمات قيد التشغيل باستخدام أدوات مثل systemctl، وإيقاف وتعطيل تلك التي لا تُساهم في أي شيء، و تحقق من منافذ الاستماع باستخدام أدوات مثل netstat أو ss لضمان فتح الأماكن الضرورية فقط.

إذا أضفنا إجراءات أمان جيدة لبروتوكول SSH (تعطيل تسجيل الدخول المباشر للمستخدم الجذر، واستخدام مصادقة المفتاح، وتعديل مهلة الاتصال) واستخدام جدران الحماية مثل firewalld أو iptables، نحصل على عدة طبقات من الحماية ضد الهجمات الخارجية بدون الكثير من التعقيد.

SELinux، وجدران الحماية، والتحسين باستخدام الضبط

بالنسبة للبيئات التي تُعتبر فيها الحماية أولوية، تُستخدم أدوات مثل تعزيز الأمان باستخدام SELinux إنها بمثابة حاجز إضافي إلزامي للتحكم في الوصول، حيث تحد من العمليات التي يمكنها القيام بماذا، بما يتجاوز الأذونات التقليدية.

من المهم التحقق من حالة SELinux، ويفضل تهيئته في وضع التطبيق الصارم و تعديل السياسات وفقًا لاحتياجات النظام باستخدام أدوات محددة. على الرغم من أنها قد تبدو مخيفة بعض الشيء في البداية، إلا أنها عند ضبطها بشكل صحيح تمنع العديد من الإجراءات غير المرغوب فيها.

في سياق الشبكة، يُستخدم firewalld أو iptables تتيح لك هذه الميزة تحديد قواعد مفصلة بشأن حركة المرور الواردة والصادرة.عن طريق فتح خدمات محددة فقط مثل SSH أو HTTP أو أي خدمة أخرى مطلوبة فعلياً. هذا يقلل بشكل كبير من عدد نقاط الضعف المحتملة.

من ناحية أخرى، هناك أدوات مثل مُعدّل، مصمم لـ تحسين أداء النظام باستخدام ملفات تعريف محددة مسبقًا بناءً على نوع عبء العمل: الخادم، سطح المكتب، الضيوف الظاهريين، إلخ. يؤدي تفعيل ملف التعريف المناسب والسماح لبرنامج Tuned بإدارة معلمات معينة إلى توفير الوقت وتحسين الأداء العام.

كل هذا لا طائل منه إذا تم القيام به مرة واحدة فقط ثم نُسي. يتطلب الأمن والأداء مراجعة مستمرة، وتحديثات منتظمة، ومراقبة دائمة.وهنا تحديداً يأتي دور الأتمتة: إذ يمكن برمجة العديد من هذه المهام الروتينية لتشغيلها من تلقاء نفسها.

أنسيبل: أتمتة واسعة النطاق وإدارة التكوين

عندما تنتقل من خادم واحد أو اثنين إلى عشرات أو مئات الخوادم، فإن cron والبرامج النصية المحلية تعجز عن الحفاظ على الاتساق. يدخل برنامج Ansible إلى الساحة كأداة لأتمتة وإدارة التكوين لا يتطلب الأمر وجود وكلاء على العقد، ويعتمد على SSH وملفات YAML القابلة للقراءة.

باستخدام Ansible، يمكنك تحديد قوائم جرد الأجهزة المضيفة، وإنشاء أزواج مفاتيح SSH للمصادقة بدون كلمة مرور، وأتمتة... إدارة نظام Linux كتابة كتيبات التشغيل التي تصف الحالة المطلوبة للخوادم: ما هي الحزم التي يجب تثبيتها، وما هي الخدمات التي يجب أن تكون نشطة، وما هي ملفات التكوين التي يجب أن تكون موجودة، إلخ.

الميزة الكبرى هي أنه يمكنك تطبيق نفس خطة العمل على العديد من الأنظمة في وقت واحد و للحصول على نتيجة متسقة وقابلة للتكراريصعب تحقيق ذلك إذا قام كل مسؤول بتطبيق التغييرات يدويًا. علاوة على ذلك، يتميز Ansible بخاصية التكرار: فتشغيل نفس ملف التشغيل عدة مرات لا يُسبب أي خلل؛ بل يضمن ببساطة أن كل شيء على ما يرام.

على سبيل المثال، يمكن لملف تشغيل بسيط أن يُثبّت tmux على جميع الخوادم في مجموعة "الويب" ببضعة أسطر من التعليمات البرمجية فقط. ومن ثم، يمكن بناء عمليات أتمتة أكثر تعقيدًا: نشر التطبيقات، وتغييرات التكوين الجماعية، وتدوير المفاتيح، وما إلى ذلك.

في سياق الأمن، يُعد Ansible مثاليًا لـ قم بتطبيق سياسات التحصين، وتكوين جدران الحماية، وضبط بروتوكول SSH، أو نشر برامج التدقيق النصية. في جميع العقد بطريقة مركزية، لتجنب الإغفالات والانحرافات.

الأتمتة اليومية: أمثلة وفلسفة العمل

وبغض النظر عن الأدوات المحددة، هناك عقلية تتطور بمرور الوقت: في كل مرة تكرر فيها شيئًا ما يدويًا عدة مرات، يجدر بك أن تسأل نفسك ما إذا كان من الممكن أتمتته.تم تصميم نظام لينكس خصيصاً لهذا الغرض.

بل إن بعض الناس ينظرون إلى الطرفية على أنها مساعد صامت يقوم بأشياء نيابةً عنك في الخلفية: مثل جدولة تذكيرات البريد الإلكتروني، وإنشاء ملخصات أسبوعية، ومزامنة الدلائل مع الخوادم البعيدة، أو تنظيف مجلدات التنزيل والمجلدات المؤقتة دون عناء..

حتى أدوات مثل at، التي غالباً ما يتم تجاهلها، تسمح حدد موعدًا لتنفيذ مهمة لمرة واحدة غدًا في وقت محدد دون تعقيد حياتك بمهمة مجدولة.بالإضافة إلى البرامج النصية المنظمة جيدًا، تحول هذه الأدوات نظام لينكس الخاص بك إلى نوع من "غسالة الأطباق" الرقمية التي تتولى المهام المتكررة.

الأهم هو التعامل مع الأتمتة بـ الحكم والحس السليمالأمر لا يتعلق بالأتمتة لأنها رائجة، بل يتعلق بتقييم المهام التي تستغرق وقتاً طويلاً، أو المعرضة للخطأ البشري، أو التي يكون لها تأثير إذا تم نسيانها، وإعطاء الأولوية لتلك المهام أولاً.

بمرور الوقت، ينتهي بك الأمر بكتابة تمارين صغيرة لنفسك: مهام cron التي تسجل التاريخ والوقت للتحقق من أنك قمت بتكوين بناء الجملة بشكل صحيح، ونصوص النسخ الاحتياطي، ونصوص المراقبة، وحتى تحويل بعض هذه المهام إلى مؤقتات systemd مع استمرارية وتأخيرات عشوائية لتوزيع الحمل.

من خلال تجميع كل هذه العناصر معًا - نصوص Bash البرمجية، وcron، وanacron، وat، ومؤقتات systemd، وAnsible، وأفضل ممارسات الأمان، وجدران الحماية، وأدوات التحسين - ينتهي بك الأمر إلى بناء بيئة حيث يعمل نظام لينكس من أجلك على مدار الساعة طوال أيام الأسبوع، حيث يحافظ على النسخ الاحتياطية، ويعزز الأمان، ويهتم بالأداء.بينما تكرس نفسك لمشاكل أقل آلية وأكثر إثارة للاهتمام.

كرونتاب لينكس
المادة ذات الصلة:
Crontab Linux: مقدمة حول جدولة المهام

جدول المحتويات