النقاط الرئيسية
- استخدم “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
يمكننا أن نرى ذلك systemd
هي العملية الأولى التي يتم تشغيلها بعد التمهيد، لذا فنحن بالتأكيد على تثبيت Linux يعتمد على systemd.
استخدام systemctl لسرد الخدمات
الأمر لإدراج الخدمات والشياطين هو systemctl
. يمكننا تحسين systemctl
الأمر مع type
و state
الخيارات. نحن نسأل systemctl
للإبلاغ عن الخدمات الموجودة في حالة التشغيل.
systemctl --type=service --state=running
يتم إنشاء جدول معلومات. إذا كان واسعًا أو طويلًا جدًا بالنسبة لنافذة المحطة الطرفية الخاصة بك، فسيتم عرضه في عارض الملفات الافتراضي لديك، والذي من المرجح أن يكون less
.
لرؤية الطرف الأيمن من الجدول، اضغط على مفتاح السهم الأيمن. وللرجوع إلى العرض المعتاد، اضغط على مفتاح السهم الأيسر.
اضغط على مفتاح Q للخروج من less. الأعمدة المعروضة هي:
- وحدة:اسم الخدمة أو الديمون. يحمل العمود عنوان “الوحدة” لأن كل ما يوجد في هذا العمود تم تشغيله باستخدام المعلومات
systemd
تم العثور عليها في ملف الوحدة. - حمولة:حالة تحميل الخدمة أو الديمون. يمكن أن تكون محملة، أو غير موجودة، أو إعداد سيئ، أو خطأ، أو مقنعة.
- نشيط:الحالة العامة التي تكون عليها الخدمة أو الديمون. يمكن أن تكون نشطة، أو قيد إعادة التحميل، أو غير نشطة، أو فاشلة، أو قيد التنشيط، أو غير نشطة.
- فرعي:الحالة الفرعية للخدمة أو الديمون. يمكن أن تكون ميتة أو خارجة أو معطلة أو غير نشطة أو قيد التشغيل.
- وصف:وصف موجز للوحدة.
يمكننا توصيل الناتج systemctl
خلال grep
إذا أردنا التركيز على خدمة واحدة، فإن هذا الأمر يعزل إدخال الجدول الخاص بـ ssh
خدمة.
systemctl --type=service --state=running | grep ssh
حتى الآن، قمنا بتصفية محتويات الجدول من خلال توفير state=running
الخيار. يمكننا استخدام أي من القيم الممكنة للحالة الفرعية بدلاً من ذلك: ميت، أو خارج، أو فاشل، أو غير نشط، أو قيد التشغيل.
دعونا نبحث عن الخدمات الفاشلة:
systemctl --type=service --state=failed
يمكن استخدام مجموعات من الحالات الفرعية. اكتبها كقائمة مفصولة بفاصلة. تأكد من عدم تضمين أي مسافة بيضاء بين الخيارات. لاحظ أن هذا يبحث عن الخدمات التي تطابق أي حالة.
systemctl --type=service --state=failed,exited
الضغط على مفتاح السهم الأيمن للنظر إلى الأعمدة خارج الشاشة يظهر أن لدينا مزيجًا من الخدمات الخارجة والفاشلة في القائمة.
افتراضيا، 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
يتم عرض جدول ملون.
إزالة state
يؤدي الخيار إلى إزالة التصفية. سيحتوي الإخراج على جميع ملفات الوحدة المثبتة، بغض النظر عن حالتها.
systemctl list-unit-files
سيحتوي الإخراج على إدخالات أكثر بكثير من النتائج من الأوامر السابقة.
على جهاز الكمبيوتر الاختباري الخاص بنا، كانت قائمة النتائج أطول بأربع مرات تقريبًا من مخرجات أوامرنا السابقة.
إذا كنت تريد استخدام state
الخيار، يمكنك استخدام حالات متعددة معه كما رأينا سابقًا. تنطبق نفس القواعد. قم بتوفير الخيارات كقيم منفصلة بفاصلة ولا تتضمن أي مسافات.
سيقوم هذا الأمر بإدراج جميع ملفات الوحدة التي تم تعطيلها أو فشل تشغيلها.
systemctl list-unit-files --state=enabled,failed
يتم عرض عدد أقل من النتائج، والتي تمت تصفيتها وفقًا للاختيارات التي أجريتها باستخدام خيار الحالة.
نظرة على خدمة واحدة بالتفصيل
إذا كان هناك شيء ما حول خدمة أو برنامج معين يثير اهتمامك ويستحق البحث بشكل أعمق، فيمكنك إلقاء نظرة عليه بالتفصيل باستخدام خيار الحالة systemctl.
دعنا نلقي نظرة على خادم SSH، sshd. كل ما نحتاج إلى فعله هو استخدام خيار الحالة واسم الخدمة أو الخادم.
systemctl status sshd
تُظهر هذه الشاشة المدمجة ما يلي:
- اسم الخدمة مع وصف موجز لها. تشير النقطة المرمزة بالألوان إلى ما إذا كانت الخدمة قيد التشغيل أم لا. يعني اللون الأخضر أنها قيد التشغيل، ويعني اللون الأحمر أنها لا تعمل.
- ما تم تحميله، بما في ذلك المسار إلى ملف الوحدة.
- منذ متى تم تشغيله.
- أين توجد الوثائق في
man
يدوي. - معرف العملية للمثيل الجاري تشغيله.
- كم عدد النسخ المتزامنة لهذه الخدمة التي يتم تشغيلها. عادةً ما يكون هذا واحدًا.
- ما مقدار الذاكرة المستهلكة؟
- ما هو مقدار وقت وحدة المعالجة المركزية الذي تم استهلاكه؟
- مجموعة التحكم التي تنتمي إليها الخدمة.
يتم أيضًا عرض الإدخالات ذات الصلة من سجل النظام. وعادةً ما تكون هذه الأحداث أحداثًا مثل بدء تشغيل الخدمة. ويمكن أن تكون هذه المعلومات مفيدة إذا كنت تبحث عن خدمة أو برنامج لم يتم تشغيله بشكل صحيح.
الأنظمة اللاإرادية
توفر الخدمات والبرمجيات المساعدة الكثير من الإجراءات التلقائية لنظام التشغيل الخاص بك، لذا فهي حيوية. وهذا يعني أن سلامتها حيوية أيضًا.
إن الحصول على عرض لخدماتك وبرامجك وملفات وحداتك أمر سهل ومفيد. كما أنه يعد خطوة قيمة لاستكشاف الأخطاء وإصلاحها إذا رفضت إحدى الخدمات أو البرامج بدء التشغيل.