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

نشرت: 2022-10-23
كمبيوتر محمول Linux يعرض موجه bash
fatmawati achmad zaenuri / Shutterstock.com
لمشاهدة جميع الخدمات قيد التشغيل على نظام Linux باستخدام systemd ، استخدم الأمر "systemctl --type = service --state = running". سيُظهر لك هذا اسم كل خدمة نشطة وتحميلها وحالتها الفرعية ووصفها. يمكنك أيضًا تغيير قيمة الحالة لمعرفة الخدمات الميتة أو الخارجة أو الفاشلة أو غير النشطة.

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

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

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

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

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

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

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

ذات صلة: لماذا لا يزال نظام لينكس مثيرًا للانقسام بعد كل هذه السنوات

الحرف الأول أو النظام القائم؟

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

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

كيفية تشغيل برنامج Linux عند بدء التشغيل باستخدام systemd
ذات صلة كيفية تشغيل برنامج Linux عند بدء التشغيل باستخدام systemd

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

 pstree | الرأس -5 

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

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

ذات صلة: كيفية إدارة العمليات من Linux Terminal: 10 أوامر تحتاج إلى معرفتها

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

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

 systemctl --type = service --state = قيد التشغيل 

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

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

يتم عرض الإخراج من استدعاء systemctl في عارض الملفات الأقل

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

يتم عرض القسم الأيمن من الإخراج من مكالمة systemctl في عارض الملفات الأقل

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

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

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

 systemctl --type = service --state = قيد التشغيل | grep ssh 

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

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

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

 systemctl --type = service --state = فشل 

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

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

 systemctl --type = service --state = فشل ، تم الخروج 

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

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

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

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

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

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

 sudo systemctl list-Units --type = service --state = قيد التشغيل
 sudo systemctl --type = service --state = قيد التشغيل

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

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

 systemctl list-unit-files --state = ممكن 

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

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

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

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

 systemctl list-unit-files 

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

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

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

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

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

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

 systemctl list-unit-files --state = ممكن ، فشل 

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

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

خليط من ملفات الوحدات المعطلة والفاشلة التي عثر عليها systemctl

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

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

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

 systemctl حالة sshd 

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

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

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

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

ذات صلة: كيفية استخدام journalctl لقراءة سجلات نظام Linux

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

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

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

ذات صلة: كيفية حل خطأ "عدد كبير جدًا من الملفات المفتوحة" على نظام Linux