ديف أوبس

إدارة الخدمات في لينكس باستخدام systemd

إدارة الخدمات على لينكس باستخدام أدوات نظام التمهيد systemd

نظام التشغيل لينكس هو أحد الأنظمة الأكثر مرونة وانتشارًا في مختلف بيئات العمل مثل الخوادم، والأنظمة المدمجة، وأجهزة الكمبيوتر المكتبية. ومن بين الأجزاء الأساسية التي تساهم في استقرار وأداء هذا النظام هو “نظام التمهيد” أو “init system”، الذي يشرف على بدء الخدمات والعمليات عندما يتم تشغيل الجهاز. من بين الأنظمة الشهيرة التي تقوم بهذا الدور هو systemd، الذي أصبح النظام الافتراضي في العديد من توزيعات لينكس مثل Ubuntu و CentOS و Debian و Fedora.

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

ما هو systemd؟

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

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

مميزات systemd

  1. التمهيد المتوازي: أحد أكبر مميزات systemd هو قدرته على تحميل الخدمات بشكل متوازي، مما يعني أن النظام يتم تحميله أسرع مقارنةً بأنظمة init التقليدية. في الأنظمة التقليدية، كان يتم تحميل الخدمات بشكل تسلسلي، بينما مع systemd، يمكن تحميل العديد من الخدمات في نفس الوقت.

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

  3. إعادة التشغيل التلقائي: يوفر systemd إمكانية تكوين إعادة التشغيل التلقائي للخدمات في حال تعطلت أو توقفت عن العمل. يمكن تكوينها لإعادة التشغيل بشكل دائم، أو عند حدوث خطأ.

  4. إدارة سجل النظام (Logs): يدمج systemd مع journalctl، وهي أداة تُستخدم للوصول إلى سجلات النظام بشكل فعال. يمكن للمستخدمين البحث في السجلات الخاصة بكل خدمة لمعرفة إذا كانت قد واجهت مشاكل أثناء التشغيل.

  5. وحدات الخدمة (Units): في systemd، يتم تمثيل الخدمات كـ “وحدات” أو units. يمكن أن تكون هذه الوحدات خدمات (services)، وحدات تركيب الملفات (mounts)، أو حتى وحدات لتطبيقات محددة. كل وحدة يتم تعريفها بواسطة ملف تكوين يحتوي على معلومات حول كيفية التعامل معها.

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

يتكون systemd من مجموعة من المكونات التي تساهم في إدارة النظام بشكل متكامل. هذه المكونات تشمل:

  1. وحدات الخدمات (Service Units):

    • تمثل الخدمات التي يقوم systemd بإدارتها.

    • يتم تخزين ملفات تعريف هذه الوحدات عادة في الدليل /etc/systemd/system/.

    • مثال على وحدة خدمة بسيطة هو:

      ini
      [Unit] Description=MyService [Service] ExecStart=/usr/bin/myservice [Install] WantedBy=multi-user.target
  2. الأهداف (Targets):

    • الأهداف هي المراحل أو الحالات التي يسعى systemd للوصول إليها أثناء التمهيد. يمكن أن يكون الهدف مثل multi-user.target، الذي يشير إلى حالة التشغيل متعددة المستخدمين، أو graphical.target، الذي يشير إلى وصول إلى واجهة المستخدم الرسومية.

    • يتم استخدام الأهداف للتحكم في ترتيب الخدمات أثناء التمهيد، مما يتيح تحميل النظام بسرعة وفعالية.

  3. وحدات الوقت (Timer Units):

    • تُستخدم لوحدات الجدولة الزمنية التي يمكنها تنفيذ أوامر معينة بعد وقت محدد أو بشكل دوري. على سبيل المثال، يمكن لـ systemd تشغيل خدمة محددة بعد دقيقة من بدء التشغيل أو في وقت محدد خلال اليوم.

  4. سجل النظام (Journal):

    • يتم استخدام journal لتخزين سجلات النظام. يتضمن ذلك معلومات مفصلة حول الأنظمة والخدمات المختلفة. يتم إدارة السجلات باستخدام الأداة journalctl، التي تتيح للمستخدمين فحص السجلات الخاصة بالخدمات أو العمليات.

أدوات systemd لإدارة الخدمات

هناك العديد من الأدوات المتاحة في systemd التي تساعد في إدارة النظام والخدمات. أهم هذه الأدوات:

  1. systemctl:

    • systemctl هو الأداة الرئيسية لإدارة systemd. يمكن استخدامه لبدء، إيقاف، إعادة تشغيل، أو فحص حالة الخدمات.

    • بعض الأوامر الأساسية تشمل:

      • بدء خدمة:

        sql
        sudo systemctl start service_name
      • إيقاف خدمة:

        arduino
        sudo systemctl stop service_name
      • إعادة تشغيل خدمة:

        nginx
        sudo systemctl restart service_name
      • التحقق من حالة خدمة:

        lua
        sudo systemctl status service_name
  2. journalctl:

    • journalctl هي الأداة المستخدمة لعرض سجلات النظام الخاصة بـ systemd. يمكن استخدامه لفحص السجلات الخاصة بخدمة معينة أو أي عملية معينة على النظام.

    • مثال على الأمر لعرض سجلات خدمة معينة:

      nginx
      sudo journalctl -u service_name
    • لعرض السجلات الأخيرة:

      nginx
      sudo journalctl -xe
  3. systemd-analyze:

    • systemd-analyze هي أداة تستخدم لتحليل أداء التمهيد في النظام. يمكن استخدامها لمعرفة الوقت الذي استغرقه التمهيد وتحليل الخدمات التي استغرقت وقتًا طويلاً.

    • مثال:

      pgsql
      systemd-analyze blame
  4. systemd-tmpfiles:

    • تستخدم هذه الأداة لإدارة الملفات المؤقتة في النظام، بما في ذلك تنظيف الملفات المؤقتة التي لم تعد بحاجة إليها.

  5. systemd-cgls و systemd-cgtop:

    • يستخدم systemd-cgls لعرض هيكل الـ cgroup (مجموعة العمليات التي تشترك في الموارد) في systemd.

    • أما systemd-cgtop فهي أداة لمراقبة استخدام الموارد على مستوى الـ cgroup.

تكوين وإدارة الخدمات

  1. إضافة خدمة جديدة:

    • لتكوين خدمة جديدة، يجب إنشاء ملف وحدة الخدمة داخل الدليل /etc/systemd/system/.

    • يتكون ملف الخدمة من ثلاثة أقسام رئيسية: [Unit] لتحديد وصف الوحدة، [Service] لتحديد كيفية تشغيل الخدمة، و [Install] لتحديد الأهداف التي يجب أن تعمل الوحدة عليها.

  2. تمكين الخدمة ليتم تشغيلها تلقائيًا عند بدء التشغيل:

    • لتمكين خدمة بحيث تبدأ تلقائيًا عند التمهيد:

      bash
      sudo systemctl enable service_name
  3. تعطيل الخدمة:

    • لتعطيل الخدمة بحيث لا تبدأ تلقائيًا عند التمهيد:

      bash
      sudo systemctl disable service_name
  4. مراقبة حالة الخدمات:

    • يمكن للمستخدمين مراقبة حالة الخدمة باستخدام الأمر systemctl status، الذي يعرض تفاصيل حول ما إذا كانت الخدمة قيد التشغيل أو توقفت.

  5. إدارة السجلات:

    • يتم استخدام journalctl للوصول إلى السجلات الخاصة بالخدمات، ويمكن تخصيصها لعرض سجلات خدمة معينة أو سجلات النظام بشكل عام.

الخلاصة

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