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

2025-02-12

المقدمة

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

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

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

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

تستخدم معظم توزيعات لينكس الحديثة، بما في ذلك أوبونتو (16.04+)، سنتوس (7+)، فيدورا، وديبيان (8+)، systemd كنظام init. أمر 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 إذا لم يكن متاحًا.)