كيفية سرد خدمات Linux باستخدام systemctl
نشرت: 2022-10-23
يعتمد كمبيوتر 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 أم لا ، هي التحقق. يمكننا القيام بذلك من خلال النظر إلى شجرة العملية باستخدام الأمر pstree . نحتاج فقط إلى رؤية الجزء العلوي من الشجرة - نحن نبحث عن العملية الأولى التي تعمل ، بعد كل شيء - لذلك سنقوم بتمرير الإخراج من خلال أمر head ، ونطلب الإدخالات الخمسة الأولى.
pstree | الرأس -5

 يمكننا أن نرى أن systemd هي العملية الأولى التي يتم تشغيلها بعد التمهيد ، لذلك نحن بالتأكيد نقوم بتثبيت Linux المستند إلى systemd.
ذات صلة: كيفية إدارة العمليات من Linux Terminal: 10 أوامر تحتاج إلى معرفتها
استخدام systemctl لسرد الخدمات
 الأمر الخاص بسرد الخدمات والشياطين هو systemctl . يمكننا تحسين الأمر systemctl type state . نطلب من systemctl الإبلاغ عن الخدمات الموجودة في حالة التشغيل.
systemctl --type = service --state = قيد التشغيل

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

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

اضغط على مفتاح Q للخروج من أقل. الأعمدة المعروضة هي:
-  الوحدة : اسم الخدمة أو البرنامج الخفي. يسمى العمود "الوحدة" لأن كل ما هو موجود في هذا العمود تم تشغيله باستخدام نظام المعلومات systemdفي ملف الوحدة.
- التحميل : حالة تحميل الخدمة أو البرنامج الخفي. يمكن تحميله ، أو عدم العثور عليه ، أو الإعداد السيئ ، أو الخطأ ، أو إخفاءه.
- نشط : الحالة العامة التي توجد بها الخدمة أو البرنامج الخفي. يمكن أن تكون نشطة ، أو معادة التحميل ، أو غير نشطة ، أو فاشلة ، أو نشطة ، أو غير نشطة.
- SUB : الحالة الفرعية للخدمة أو الخفي. يمكن أن يكون ميتًا أو تم الخروج منه أو فشل أو غير نشط أو قيد التشغيل.
- الوصف : وصف موجز للوحدة.
 يمكننا توجيه إخراج systemctl عبر grep إذا أردنا التركيز على خدمة واحدة. يعزل هذا الأمر إدخال الجدول لخدمة ssh .
systemctl --type = service --state = قيد التشغيل | grep ssh

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

لنبحث عن الخدمات الفاشلة:
systemctl --type = service --state = فشل

يمكن استخدام مجموعات من الدول الفرعية. اكتبهم كقائمة مفصولة بفواصل. تأكد من عدم تضمين أي مسافات بيضاء بين الخيارات. لاحظ أن هذا يعثر على الخدمات التي تتطابق مع أي من الحالتين .
systemctl --type = service --state = فشل ، تم الخروج

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

 بشكل افتراضي ، يسرد 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 = ممكن

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

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

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

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

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

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

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

