كيفية إدراج خدمات Linux باستخدام systemctl

النقاط الرئيسية

  • استخدم “systemctl –type=service –state=running” لرؤية جميع الخدمات قيد التشغيل على نظام Linux باستخدام systemd. يوفر تفاصيل مثل الاسم والحمل والحالة الفرعية والوصف.
  • Systemd هو مدير نظام وخدمة في Linux يقوم بتشغيل الخدمات. الخدمات عبارة عن مهام خلفية بدون واجهة مستخدم، بينما يتم تشغيل البرامج التجسسية عند بدء التشغيل.
  • تستخدم أغلب توزيعات Linux برنامج systemd، ولكن هناك بدائل مثل runit أو s6-linux-init. استخدم “pstree | head -5” للتحقق مما إذا كان النظام يعتمد على systemd.



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


ما هي الخدمات والشياطين؟

الخدمات والبرامج الضارة هي مهام خلفية يتم تشغيلها بدون واجهة مستخدم، ولا تتطلب تفاعلًا بشريًا، وعادةً ما يتم تشغيلها بمجرد تشغيل الكمبيوتر.

في وقت ما، تم إطلاق الخدمات بواسطة init، والتي كانت أول عملية يتم إطلاقها. تم الاحتفاظ بتفاصيل الخدمات في مجموعة من البرامج النصية الموجودة في الدليل “/etc/init/d”. لا يزال هذا هو الحال في التوزيعات غير systemd.

في عالم systemd، يتم إطلاق الخدمات بواسطة systemd وهي العملية الأولى التي يتم إطلاقها الآن. يتم تخزين تفاصيل الخدمات في ملفات الوحدة الموجودة في الدليل “/usr/lib/systemd”.


وفقا لصفحة الرجل الخاصة به، systemd هو مدير النظام والخدمة. يمكنك استخدام systemctl أمر لتفقد والتحكم في جوانب مختلفة من نظام systemd، بما في ذلك الخدمات والشياطين.

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

init أو systemd؟

تستخدم الغالبية العظمى من توزيعات Linux نظام systemd، بما في ذلك Arch وRed Hat وDebian، والعديد من التوزيعات المشتقة منها. ويشمل ذلك عائلة توزيعات Ubuntu، وFedora ونسخها المتنوعة، وManjaro والتوزيعات الأخرى المستندة إلى Arch.

ومع ذلك، هناك شوك أو نكهات لبعض هذه التوزيعات تم إنشاؤها خصيصًا لتجنب الاضطرار إلى استخدام systemd. ليس هذا فحسب، بل هناك أنظمة تهيئة أخرى يمكن لأي شخص اختيار استخدامها بدلاً من النظام الذي يأتي افتراضيًا في توزيعه، مثل رونيت أو s6-linux-init.


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

pstree | head -5

استخدام pstree عبر head لتحديد ما إذا كان تثبيت Linux يستخدم systemd

يمكننا أن نرى ذلك systemd هي العملية الأولى التي يتم تشغيلها بعد التمهيد، لذا فنحن بالتأكيد على تثبيت Linux يعتمد على systemd.


استخدام systemctl لسرد الخدمات

الأمر لإدراج الخدمات والشياطين هو systemctl. يمكننا تحسين systemctl الأمر مع type و state الخيارات. نحن نسأل systemctl للإبلاغ عن الخدمات الموجودة في حالة التشغيل.

systemctl --type=service --state=running

استخدام systemctl لسرد الخدمات قيد التشغيل

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

النموذج الناتج عن استدعاء systemctl المعروض في عارض الملفات less

لرؤية الطرف الأيمن من الجدول، اضغط على مفتاح السهم الأيمن. وللرجوع إلى العرض المعتاد، اضغط على مفتاح السهم الأيسر.


القسم الأيمن من نموذج الإخراج عبارة عن استدعاء systemctl معروض في عارض الملفات less

اضغط على مفتاح Q للخروج من less. الأعمدة المعروضة هي:

  • وحدة:اسم الخدمة أو الديمون. يحمل العمود عنوان “الوحدة” لأن كل ما يوجد في هذا العمود تم تشغيله باستخدام المعلومات systemd تم العثور عليها في ملف الوحدة.
  • حمولة:حالة تحميل الخدمة أو الديمون. يمكن أن تكون محملة، أو غير موجودة، أو إعداد سيئ، أو خطأ، أو مقنعة.
  • نشيط:الحالة العامة التي تكون عليها الخدمة أو الديمون. يمكن أن تكون نشطة، أو قيد إعادة التحميل، أو غير نشطة، أو فاشلة، أو قيد التنشيط، أو غير نشطة.
  • فرعي:الحالة الفرعية للخدمة أو الديمون. يمكن أن تكون ميتة أو خارجة أو معطلة أو غير نشطة أو قيد التشغيل.
  • وصف:وصف موجز للوحدة.


يمكننا توصيل الناتج systemctl خلال grep إذا أردنا التركيز على خدمة واحدة، فإن هذا الأمر يعزل إدخال الجدول الخاص بـ ssh خدمة.

systemctl --type=service --state=running | grep ssh

استخدام grep لعزل خدمة واحدة عن النتائج

حتى الآن، قمنا بتصفية محتويات الجدول من خلال توفير state=running الخيار. يمكننا استخدام أي من القيم الممكنة للحالة الفرعية بدلاً من ذلك: ميت، أو خارج، أو فاشل، أو غير نشط، أو قيد التشغيل.

دعونا نبحث عن الخدمات الفاشلة:

systemctl --type=service --state=failed

الإبلاغ عن الخدمات الفاشلة باستخدام systemctl


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

systemctl --type=service --state=failed,exited

البحث عن الخدمات التي فشلت أو خرجت باستخدام systemctl

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

تم العثور على مزيج من الخدمات الفاشلة والمتوقفة بواسطة systemctl


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

هناك خيار لطلب صريح systemctl لإدراج الوحدات، ولكن نظرًا لأنه الإجراء الافتراضي، فإنه لا يتم استخدامه كثيرًا.

هذه الأوامر تنتج نفس النتائج.

sudo systemctl list-units --type=service --state=running

sudo systemctl --type=service --state=running

استخدام systemctl لسرد ملفات الوحدة

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

systemctl list-unit-files --state=enabled

إدراج ملفات الوحدة باستخدام systemctl


يتم عرض جدول ملون.

قائمة ملفات الوحدة التي تم إنشاؤها بواسطة systemctl، والتي يتم عرضها في متصفح الملفات less

إزالة state يؤدي الخيار إلى إزالة التصفية. سيحتوي الإخراج على جميع ملفات الوحدة المثبتة، بغض النظر عن حالتها.

systemctl list-unit-files

استخدام systemctl لإدراج ملفات الوحدة بدون تصفية

سيحتوي الإخراج على إدخالات أكثر بكثير من النتائج من الأوامر السابقة.

جميع ملفات الوحدة المدرجة بواسطة systemctl والمعروضة في متصفح الملفات less


على جهاز الكمبيوتر الاختباري الخاص بنا، كانت قائمة النتائج أطول بأربع مرات تقريبًا من مخرجات أوامرنا السابقة.

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

سيقوم هذا الأمر بإدراج جميع ملفات الوحدة التي تم تعطيلها أو فشل تشغيلها.

systemctl list-unit-files --state=enabled,failed

استخدام systemctl للبحث عن ملفات الوحدة التي تتطابق مع إحدى الحالتين

يتم عرض عدد أقل من النتائج، والتي تمت تصفيتها وفقًا للاختيارات التي أجريتها باستخدام خيار الحالة.


تم العثور على مزيج من ملفات الوحدة المعطلة والفاشلة بواسطة systemctl

نظرة على خدمة واحدة بالتفصيل

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

دعنا نلقي نظرة على خادم SSH، sshd. كل ما نحتاج إلى فعله هو استخدام خيار الحالة واسم الخدمة أو الخادم.

systemctl status sshd

تفاصيل خدمة واحدة يتم عرضها بواسطة systemctl

تُظهر هذه الشاشة المدمجة ما يلي:


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

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

الأنظمة اللاإرادية

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

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


أضف تعليق