RDP Monster

systemctl list services: كل طرق سرد خدمات Linux

systemctl list services: كل طرق سرد خدمات Linux

الأمر الواحد الذي يجب معرفته: systemctl list-units --type=service

على أي توزيعة تعمل بـ systemd — Ubuntu منذ 15.04، وDebian منذ 8، وRHEL وCentOS منذ 7، إضافة إلى Fedora وArch وopenSUSE — تكون كل خدمة وحدة systemd، وsystemctl هو الأداة التي تسردها:

systemctl list-units --type=service

يطبع هذا افتراضيًا كل وحدة خدمة موجودة حاليًا في ذاكرة systemd: الخدمات النشطة، أو التي لديها مهام في الانتظار، أو التي فشلت. وهو لا يعرض الخدمات المثبّتة التي لم تُشغَّل قط. وعندما يكون الخرج أطول من الطرفية، يمرّره systemctl إلى مُصفّح (less) — اضغط q للخروج، أو أضف --no-pager للطباعة مباشرة إلى stdout.

يحتوي كل سطر على خمسة أعمدة:

  • UNIT — اسم الوحدة، مثل ssh.service. وهذا هو الاسم نفسه الذي تمرّره إلى systemctl status وstart وstop.
  • LOAD — ما إذا كان ملف الوحدة قد حُلِّل بشكل صحيح: loaded أو not-found أو bad-setting أو error أو masked.
  • ACTIVE — الحالة العامة: active أو inactive أو activating أو deactivating أو failed.
  • SUB — الحالة التفصيلية الخاصة بنوع الوحدة: يمكن للخدمة أن تكون running أو exited أو dead وغيرها.
  • DESCRIPTION — النص المقروء للبشر المأخوذ من ملف الوحدة.

اقرأ ثنائي ACTIVE/SUB معًا: active (running) يعني أن هناك عملية حيّة الآن، بينما active (exited) يعني أن خدمة من نوع oneshot عملت بنجاح وانتهت — وهذا طبيعي لمهام الإعداد، وليس خطأً يحتاج إصلاحًا.

التصفية: العاملة أو الفاشلة أو الجميع

يصفّي الخيار --state= على أي قيمة من LOAD أو ACTIVE أو SUB، ويقبل قوائم مفصولة بفواصل:

# Only services with a live process
systemctl list-units --type=service --state=running

# Everything loaded, including stopped and dead services
systemctl list-units --type=service --all

# Only failures
systemctl list-units --type=service --state=failed

# Combine states
systemctl list-units --type=service --state=running,exited

systemctl --failed هو اختصار مدمج لمرشّح الفشل، ويستحق أن يصبح ردّ فعل تلقائيًا على أي جهاز تسجّل الدخول إليه. وللحصول على خرج قابل للمعالجة آليًا، يُسقط --no-legend سطور الترويسة والملخص، ويُسقط --plain رموز النقاط، فتبقى الأعمدة ثابتة لأجل awk أو cut. وللبحث بالاسم، مرّر الخرج إلى grep: systemctl list-units --type=service --all --no-pager | grep ssh.

ما يبدأ مع الإقلاع: systemctl list-unit-files

يجيب list-units على سؤال «ما الذي يعمل الآن؟». وللإجابة على «ما الذي سيبدأ مع الإقلاع؟»، اسرد ملفات الوحدات المثبّتة على القرص بدلًا من ذلك:

systemctl list-unit-files --type=service
systemctl list-unit-files --type=service --state=enabled

هنا يصف عمود STATE إعدادات الإقلاع، لا حالة التشغيل الفعلية:

  • enabled — يبدأ تلقائيًا مع الإقلاع (أو عند مُشغّله، في حالة الخدمات المُنشَّطة بمقبس أو مؤقّت).
  • disabled — مثبّت، لكن لا شيء يبدأه تلقائيًا.
  • static — لا يحتوي على قسم [Install]؛ يعمل فقط كتابع لوحدة أخرى ولا يمكن تمكينه مباشرة.
  • masked — مرتبط رمزيًا بـ /dev/null؛ يرفض systemd تشغيله بأي شكل.
  • generated — أُنشئ في وقت التشغيل بواسطة مُولِّد، عادةً من سكربت init قديم.

تطبع إصدارات systemd الحديثة أيضًا عمود preset (VENDOR PRESET أو PRESET بحسب الإصدار) يوضح ما هو الإعداد الافتراضي للتوزيعة. والفخّ الذي يجب تجنّبه: «مُمكَّن» لا يعني «يعمل»، و«مُعطَّل» لا يعني «متوقف». فقد تكون الخدمة مُعطَّلة ومع ذلك تعمل لأن أحدهم شغّلها يدويًا، أو مُمكَّنة ومع ذلك ميّتة لأنها انهارت. وعندما يكون الأمر مهمًا، راجع القائمتين معًا.

خدمة واحدة في المرة: status وis-active وis-enabled

بعد أن تلفت خدمة ما نظرك، اقترب منها أكثر:

systemctl status nginx
systemctl is-active nginx    # prints: active | inactive | failed
systemctl is-enabled nginx   # prints: enabled | disabled | static | masked
systemctl is-failed nginx

يعرض status الصورة الكاملة: حالة ACTIVE/SUB، ومعرّف العملية الرئيسي، ومدة التشغيل، واستهلاك الذاكرة، وشجرة عمليات cgroup، وآخر عشرة سطور من السجل. وعندما لا تكفي عشرة سطور، اذهب إلى السجل مباشرة عبر journalctl -xeu nginx (يصفّي -u بحسب الوحدة، ويقفز -e إلى النهاية، ويضيف -x نصًا توضيحيًا).

أوامر is-* مصمّمة للسكربتات: تطبع كلمة واحدة وتضبط رمز الخروج تبعًا لذلك — يخرج is-active بالرمز 0 فقط عندما تكون الوحدة نشطة، ويخرج is-enabled برمز غير صفري للوحدات المعطَّلة أو المحجوبة. أضف --quiet لكتم الخرج والاحتفاظ برمز الخروج فقط.

تعمل كل أوامر السرد أعلاه بحساب مستخدم عادي دون صلاحيات. أما إدارة الخدمات فعليًا — start وstop وenable وdisable — فتتطلب صلاحيات الجذر، لذا من المفيد أن تفهم كيف يعمل sudo وتبديل المستخدمين على Ubuntu قبل أن تتجاوز مجرّد قراءة الحالة. ولاحظ أيضًا أن وحدات مستوى المستخدم تقع في مدير منفصل: يسرد systemctl --user list-units --type=service الخدمات العاملة في جلستك الخاصة، وهذا سبب ظهور بعض الخدمات كأنها «مفقودة» من قائمة النظام.

ورقة مراجعة: القوائم التي ستستخدمها فعلًا

الأمرما يعرضه
systemctl list-units --type=serviceالخدمات النشطة والفاشلة الموجودة حاليًا في الذاكرة
systemctl list-units --type=service --allكل خدمة محمّلة، بما فيها غير النشطة
systemctl list-units --type=service --state=runningالخدمات التي لها عملية حيّة فقط
systemctl --failedالوحدات الفاشلة فقط — فحص الصحة اليومي
systemctl list-unit-files --type=serviceكل خدمة مثبّتة وإعداد إقلاعها
systemctl list-unit-files --state=enabledالوحدات التي تبدأ تلقائيًا مع الإقلاع
systemctl status nameتفاصيل كاملة لخدمة واحدة مع سطور السجل الأخيرة
systemctl is-active nameحالة بكلمة واحدة مع رمز خروج مناسب للسكربتات
systemctl is-enabled nameإعداد الإقلاع لخدمة واحدة
service --status-allسرد بنمط SysV لسكربتات /etc/init.d (توافقية)

سيناريوهات عمل واقعية

1. اعثر على الخدمة التي تفشل باستمرار

systemctl --failed
systemctl status myapp.service --no-pager -l
journalctl -xeu myapp.service
systemctl reset-failed myapp.service

ابدأ واسعًا بـ --failed، ثم اقرأ خرج status لمعرفة رمز الخروج وآخر سطور السجل، ثم تعمّق في السجل للحصول على التتبّع الكامل. وبعد إصلاح السبب الجذري وعودة الخدمة للعمل، يمسح reset-failed مدخل الفشل القديم كي يبدأ فحص الصحة التالي نظيفًا.

2. راجع ما سيبدأ في الإقلاع التالي

systemctl list-unit-files --type=service --state=enabled --no-legend | awk '{print $1}'
systemd-analyze blame

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

3. أوامر سطر واحد للسكربتات والمراقبة

systemctl is-active --quiet nginx && echo up || echo down
systemctl list-units --type=service --state=running --no-legend --plain | awk '{print $1}'
systemctl show -p ActiveState,SubState nginx
systemctl list-units --type=service -o json   # systemd 246 or newer

يطبع show -p أزواج Key=Value لا يتغير تنسيقها بين الإصدارات، ويتدفّق خرج JSON مباشرة إلى jq. وإذا وجدت نفسك تعيد الفحوص نفسها عند كل تسجيل دخول، فاجمعها في سكربت صغير — يشرح دليلنا حول ملفات .sh وبرمجة الشِل كيف تحوّل هذا النوع من المقتطفات إلى أداة قابلة لإعادة الاستخدام.

لا يوجد systemd؟ service --status-all وOpenRC

قبل أن تفترض وجود systemctl، تأكّد ممّا يعمل على الجهاز فعلًا — التحقّق من نظام التشغيل وإصداره من سطر الأوامر يستغرق عشر ثوانٍ ويخبرك ما إذا كنت على توزيعة systemd من الأصل. وإذا كان systemctl غير موجود، فأنت على SysV init أو OpenRC:

service --status-all

على Debian وUbuntu يمرّ هذا الأمر على /etc/init.d ويطبع [ + ] للعاملة، و[ - ] للمتوقفة، و[ ? ] للسكربتات التي لا تملك أمر status. وهو يعمل أيضًا على توزيعات systemd عبر طبقة توافقية، لكنه يرى سكربتات init فقط، لذا فضّل systemctl هناك. وعلى Alpine وGentoo، يكون OpenRC هو نظام الإقلاع: يسرد rc-status الخدمات في مستوى التشغيل الحالي، ويسرد rc-update show ما يبدأه كل مستوى تشغيل.

كل ما سبق يفترض أن لديك جهاز Linux تملك فيه صلاحيات الجذر وتستطيع تشغيل الخدمات وتعطيلها وإصلاحها بحرّية. وإذا احتجت جهازًا للتدريب — أو خادمًا نظيفًا لاستضافة أعمال حقيقية — فإن خادم Linux VPS مع صلاحيات جذر كاملة من rdp.monster يأتي بمعالج وذاكرة مخصّصين، ونطاق ترددي غير محدود (استخدام عادل)، وبدون KYC، ويُسلَّم بعد نحو 10 ثوانٍ من تأكيد الدفع، فتستطيع تشغيل systemctl list-units على خادمك الخاص في غضون دقيقة.

الأسئلة الشائعة

لماذا تظهر خدمة بحالة active (exited) بدل active (running)؟

لأنها خدمة oneshot عملت بنجاح وانتهت — وليس خطأً.
الخدمات ذات Type=oneshot (أو RemainAfterExit=yes) تنفّذ مهمة مرة واحدة — تركيب الأقراص، إعداد جدار الحماية، التنظيف — ثم تخرج. وحينها يُبلّغ systemd عن active (exited): نجحت الوحدة وتُعدّ «مُشغَّلة»، لكن لا تبقى أي عملية خلفها. أما الخدمات الخفية مثل nginx أو sshd فتظهر بحالة active (running). وإذا ظهرت خدمة تتوقع أنها خفية بحالة exited، فافحص ملف وحدتها بـ systemctl cat name.service لترى كيف عُرّفت.

ما معنى النقاط الملوّنة في خرج systemctl؟

الأخضر يعني نشط، والأبيض يعني غير نشط، والأحمر يعني فاشل أو في حالة خطأ.
النقطة التي تسبق اسم الوحدة في systemctl status وsystemctl list-units مؤشّر حالة سريع: أخضر للنشط، وأبيض لغير النشط أو قيد التوقّف، وأحمر لحالات الفشل أو الخطأ. كما تُبرز الصفوف الفاشلة بالأحمر في القوائم، ما يجعل systemctl --failed سهل التفحّص. وفي السكربتات أو السجلات التي تُعيق فيها رموز الألوان، أضف --plain أو مرّر الخرج إلى أنبوب، فتختفي هذه الزخارف.

هل هناك مكافئ في systemctl للأمر chkconfig --list؟

نعم — الأمر systemctl list-unit-files --type=service يحلّ محلّ chkconfig --list.
على RHEL وCentOS 7 أو أحدث، حلّ systemctl list-unit-files --type=service محلّ chkconfig --list، وهو يعرض كل خدمة مثبّتة وما إذا كانت enabled أو disabled أو static أو masked. ولخدمة واحدة، يحلّ systemctl is-enabled name محلّ chkconfig name، ويحلّ systemctl enable name محلّ chkconfig name on. وقد يبقى الأمر القديم موجودًا كطبقة توافقية، لكنه يغطّي سكربتات SysV القديمة فقط.

كيف أمنع خدمة من البدء مع الإقلاع؟

استخدم systemctl disable لإزالتها من الإقلاع، أو mask لحجبها كليًا.
نفّذ sudo systemctl disable name لإزالة رابط الإقلاع الرمزي؛ أضف --now لإيقافها فورًا أيضًا. وتبقى الخدمة المعطَّلة قابلة للتشغيل يدويًا أو للاستدعاء كتابع لوحدة أخرى. وإذا أردت ألّا تبدأ أبدًا، استخدم sudo systemctl mask name، فيربط الوحدة بـ /dev/null بحيث تفشل كل محاولة تشغيل. ويمكن التراجع لاحقًا عبر systemctl unmask. تحقّق من النتيجة بـ systemctl is-enabled name.

Adrien Roche — محرر البنية التحتية والاستضافة

مهندس أنظمة بخبرة تزيد عن 10 سنوات في تشغيل أساطيل Windows Server وLinux. يدير أدريان وثائق البنية التحتية في rdp.monster ويكتب أدلتنا حول RDP واستضافة VPS وإدارة الخوادم والشبكات وأدوات الخصوصية.

سجّل في برنامج الموزعين لدينا

معلوماتك

إذا كان لديك أي سؤال، contact us by clicking here !
الاسم(مطلوب)
أدخل عنوان بريدك الإلكتروني، ويجب أن يكون لديك حساب على manager.rdp.monster !

شركتك

أدخل عنوان موقعك الإلكتروني إن كان لديك موقع
اشرح بإيجاز كيف ستبيع الخدمات لعملائك. على سبيل المثال، عبر التحدث مع الأشخاص في المنتديات.

نحن نستخدم ملفات تعريف الارتباط !

نحن نستخدم ملفات تعريف الارتباط لتحسين تجربة التصفح الخاصة بك، وتقديم إعلانات أو محتوى مخصص، وتحليل حركة المرور لدينا. بالنقر على «قبول»، فإنك توافق على استخدامنا لملفات تعريف الارتباط.