كيفية عرض الخدمات الجارية على لينكس: دليل كامل لجميع أنظمة init
المقدمة
خدمات لينكس هي عمليات خلفية تعمل باستمرار لأداء مهام النظام، مثل إدارة الشبكات، والتعامل مع تسجيلات دخول المستخدمين، أو تشغيل خوادم الويب. يمكن إدارة هذه الخدمات من خلال أدوات مختلفة، اعتمادًا على توزيع لينكس ونظام 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
إذا لم يكن متاحًا.)