كيفية عرض الخدمات العاملة على لينكس: دليل كامل لجميع أنظمة init

LightNode
بواسطة LightNode · · تم التحديث 2026-07-06

إجابة سريعة: كيفية عرض الخدمات العاملة على لينكس

لعرض الخدمات العاملة على لينكس، استخدم أحد هذه الأوامر حسب نظام init لديك:

  • systemd (أوبونتو 24.04، ديبيان 12، CentOS/RHEL 9، فيدورا 40+، ومعظم التوزيعات الحديثة في 2026):
    systemctl list-units --type=service --state=running
    
    أو، لعرض كل وحدة خدمة بصرف النظر عن حالتها:
    systemctl --type=service
    
  • SysVinit / الأنظمة الأقدم (أو لتضمين سكربتات init القديمة):
    service --status-all
    

يُعد systemd نظام init الافتراضي في كل توزيعة لينكس رئيسية تقريبًا اليوم، ولذلك فإن systemctl list-units --type=service --state=running هو الجواب في الغالبية العظمى من الحالات. وهو يطبع جدولًا بالخدمات النشطة حاليًا مع حالات LOAD وACTIVE وSUB الخاصة بها. وإذا لم يُعثر على systemctl، فهذا يعني أن نظامك لا يشغّل systemd — وعندئذٍ ارجع إلى service --status-all (لـ SysVinit) أو rc-status (لـ OpenRC).

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

المقدمة

خدمات لينكس هي عمليات خلفية تعمل باستمرار لأداء مهام النظام، مثل إدارة الشبكات، والتعامل مع تسجيلات دخول المستخدمين، وتشغيل خوادم الويب. ويمكن إدارة هذه الخدمات عبر أدوات مختلفة، حسب توزيعة لينكس ونظام init المستخدَم. واعتبارًا من عام 2026، يُعد systemd نظام init المعياري في جميع التوزيعات الرئيسية تقريبًا، ولذلك يركّز معظم هذا الدليل على الأمر systemctl.

معرفة كيفية عرض الخدمات العاملة أمر ضروري لمسؤولي الأنظمة والمطورين، فهي تساعد في:

  • استكشاف المشكلات – التحقق مما إذا كانت خدمة حيوية تعمل أم أنها فشلت.
  • مراقبة الأداء – تحديد الخدمات الكثيرة الاستهلاك للموارد.
  • تدقيق الأمان – التأكد من أن الخدمات الضرورية وحدها هي النشطة.

استخدام systemctl (للأنظمة المبنية على Systemd)

تستخدم معظم توزيعات لينكس الحديثة systemd نظام init. ويشمل ذلك إصدارات 2026 الحالية مثل أوبونتو (من 16.04 حتى 24.04 LTS وما بعدها)، وديبيان (من 8 حتى 12 "Bookworm" وما بعدها)، وفيدورا (40+)، وCentOS Stream / RHEL / Rocky Linux / AlmaLinux (من 7 حتى 9 وما بعدها)، وopenSUSE. والأمر systemctl هو الأداة الرئيسية لإدارة الخدمات وعرضها في جميع هذه الأنظمة.

التحقق من حالة خدمة واحدة

للتحقق مما إذا كانت خدمة معينة تعمل، استخدم:

systemctl status <service-name>

على سبيل المثال، للتحقق مما إذا كان خادم الويب nginx يعمل:

systemctl status nginx

سيوضح الناتج ما إذا كانت الخدمة نشطة (تعمل) أو غير نشطة أو فاشلة، مع سجلات تفيد في التصحيح.

عرض جميع الخدمات النشطة

لعرض جميع الخدمات العاملة، استخدم:

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

يعرض هذا الأمر جدولًا بجميع الخدمات العاملة حاليًا مع حالة كل منها.

عرض جميع الخدمات (بما فيها غير النشطة)

إذا أردت رؤية جميع الخدمات، بصرف النظر عن كونها تعمل أم لا:

systemctl list-units --type=service

يشمل ذلك الخدمات النشطة وغير النشطة والفاشلة أو التي في حالات أخرى.

تصفية الخدمات حسب الحالة

يمكنك تصفية الخدمات بناءً على حالتها باستخدام:

systemctl list-units --type=service --state=failed

يعرض هذا الخدمات الفاشلة فقط، وهو ما قد يكون مفيدًا في استكشاف الأخطاء.

عرض الخدمات المفعّلة عند الإقلاع

للتحقق من الخدمات المضبوطة على البدء تلقائيًا عند الإقلاع:

systemctl list-unit-files --type=service | grep enabled

مثال على الناتج

قد يبدو الناتج النموذجي للأمر systemctl list-units --type=service --state=running كما يلي:

UNIT                        LOAD   ACTIVE SUB     DESCRIPTION
cron.service                loaded active running Regular background program processing daemon
networking.service          loaded active running Raise network interfaces
ssh.service                 loaded active running OpenBSD Secure Shell server
systemd-logind.service      loaded active running Login Service

ملخص

  • استخدم systemctl status <service> للتحقق من حالة خدمة واحدة.
  • استخدم systemctl list-units --type=service --state=running لعرض الخدمات النشطة.
  • استخدم systemctl list-units --type=service لرؤية جميع الخدمات.
  • استخدم systemctl list-unit-files --type=service لعرض الخدمات المفعّلة عند الإقلاع.

استخدام ps وgrep للعمليات العاملة

إذا أردت عرض الخدمات العاملة دون الاعتماد على systemctl أو غيره من أدوات إدارة الخدمات، فيمكنك استخدام ps (حالة العملية) مع grep للعثور على عمليات معينة.

تكون هذه الطريقة مفيدة عندما:

  • تعمل على نظام لينكس مبسّط يفتقر إلى الأمرين systemctl أو service.
  • تريد التحقق مما إذا كانت عملية معينة تعمل، بصرف النظر عن نظام init.

عرض جميع العمليات العاملة

يعرض الأمر ps aux جميع العمليات العاملة على النظام:

ps aux

يُنتج هذا قائمة شاملة بجميع العمليات العاملة، بما في ذلك معرّفات العمليات (PIDs)، واستهلاك المعالج، واستهلاك الذاكرة، وأسماء الأوامر.

البحث عن خدمة معينة

للتحقق مما إذا كانت خدمة معينة تعمل، استخدم ps aux | grep <service-name>:

ps aux | grep nginx

يعرض هذا الأسطر التي تتضمن "nginx"، ما يبيّن ما إذا كانت تعمل. وقد يبدو الناتج كما يلي:

root      1034  0.0  0.3  49536  3412 ?        Ss   12:34   0:00 nginx: master process /usr/sbin/nginx
www-data  1035  0.0  0.2  49536  2824 ?        S    12:34   0:00 nginx: worker process
user      2045  0.0  0.0  14856   900 pts/0    S+   12:35   0:00 grep --color=auto nginx

هنا:

  • يشير السطران الأولان إلى أن خدمة nginx تعمل.
  • أما السطر الأخير (grep --color=auto nginx) فهو الأمر grep نفسه. ويمكنك استبعاده باستخدام:
ps aux | grep nginx | grep -v grep

عرض العمليات في صيغة هرمية

للحصول على عرض أكثر تنظيمًا، استخدم:

ps fax

يعرض هذا هيكلًا شجريًا للعمليات العاملة، ما يسهّل تحديد الخدمات التي تعمل وعملياتها الفرعية.

العثور على الخدمات حسب المنفذ

إذا كنت تشك في أن خدمة تعمل على منفذ معين لكنك غير متأكد من اسمها، فاستخدم:

netstat -tulnp | grep :80

أو، إذا لم يكن netstat متاحًا:

ss -tulnp | grep :80

يعرض هذا العملية التي تستخدم المنفذ 80 (الذي تستخدمه عادةً خوادم الويب مثل Nginx أو Apache).

ملخص

  • استخدم ps aux لعرض جميع العمليات العاملة.
  • استخدم ps aux | grep <service-name> للتحقق من خدمة معينة.
  • استخدم ps fax للحصول على عرض شجري للعمليات.
  • استخدم netstat -tulnp أو ss -tulnp للعثور على الخدمات العاملة على منافذ معينة.
كيفية عرض الخدمات العاملة على لينكس

الأسئلة الشائعة (FAQ)

1. كيف أتحقق مما إذا كانت خدمة تعمل على لينكس؟

يمكنك استخدام طرق مختلفة حسب توزيعة لينكس لديك:

  • للأنظمة المبنية على systemd:
    systemctl status <service-name>
    
  • للأنظمة المبنية على SysVinit:
    service <service-name> status
    
  • باستخدام ps وgrep:
    ps aux | grep <service-name>
    

2. كيف أعرض جميع الخدمات العاملة؟

  • للأنظمة المبنية على systemd:
    systemctl list-units --type=service --state=running
    
  • للأنظمة المبنية على SysVinit:
    service --status-all
    
  • باستخدام الأمر ps:
    ps aux
    

3. كيف أتحقق مما إذا كانت خدمة تبدأ عند الإقلاع؟

  • لـ systemd:
    systemctl is-enabled <service-name>
    
  • لـ SysVinit (الأنظمة المبنية على RHEL):
    chkconfig --list <service-name>
    

4. كيف أعيد تشغيل خدمة؟

  • للأنظمة المبنية على systemd:
    sudo systemctl restart <service-name>
    
  • للأنظمة المبنية على SysVinit:
    sudo service <service-name> restart
    

5. كيف أوقف خدمة أو أعطّلها؟

  • لإيقاف خدمة مؤقتًا:
    sudo systemctl stop <service-name>
    
  • لمنع خدمة من البدء عند الإقلاع:
    sudo systemctl disable <service-name>
    

6. كيف أعرف الخدمة التي تستخدم منفذًا معينًا؟

يمكنك استخدام netstat أو ss للعثور على الخدمات العاملة على منفذ معين:

netstat -tulnp | grep :80

أو

ss -tulnp | grep :80

7. ماذا لو لم يُعثر على systemctl؟

إذا ظهر لك خطأ مثل command not found: systemctl، فهذا يعني أن نظامك قد لا يستخدم systemd. جرّب استخدام:

service --status-all

أو

ps aux | grep <service-name>

8. كيف أعرض الخدمات الفاشلة؟

في الأنظمة المبنية على systemd، شغّل:

systemctl list-units --type=service --state=failed

9. كيف أطّلع على سجلات خدمة معينة؟

لعرض سجلات خدمة تُدار بواسطة systemd، استخدم:

journalctl -u <service-name>

ولعرض السجلات في الوقت الفعلي:

journalctl -u <service-name> -f

10. هل يمكنني استخدام top أو htop لرؤية الخدمات العاملة؟

نعم! يوفر top وhtop عرضًا حيًا للعمليات العاملة:

  • استخدم top:
    top
    
  • استخدم htop (تفاعلي وسهل الاستخدام):
    htop
    
    (ثبّته باستخدام sudo apt install htop أو sudo yum install htop إذا لم يكن متاحًا.)