انتقل إلى المحتوى الرئيسي

الفصل 2.7 - الخدمات والعمليات الخلفية

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • فهم خدمات وعمليات Linux الخلفية
  • إدارة الخدمات باستخدام systemd
  • إنشاء خدمات مخصصة
  • فهم ملفات الوحدة systemd

ما هي الخدمة/العملية الخلفية؟​

الخدمة (أو العملية الخلفية) هي برنامج يعمل في الخلفية، عادةً بدون واجهة مستخدم، لتوفير وظائف نظام أو شبكة.


أنواع الخدمات​

خدمات النظام​

خدمات أساسية لعمل النظام:

  • sshd: خادم SSH
  • systemd-logind: إدارة الجلسات
  • NetworkManager: إدارة الشبكة

خدمات الشبكة​

خدمات تستمع على الشبكة:

  • apache2/nginx: خوادم ويب
  • mysql/postgresql: قواعد بيانات
  • bind9: خادم DNS

خدمات المستخدم​

خدمات يتم تشغيلها بواسطة المستخدم:

  • pulseaudio: صوت
  • dbus: اتصال بين العمليات

الإدارة باستخدام systemd​

أوامر systemctl​

# عرض حالة الخدمة
systemctl status apache2

# بدء الخدمة
systemctl start apache2

# إيقاف الخدمة
systemctl stop apache2

# إعادة تشغيل الخدمة
systemctl restart apache2

# إعادة تحميل التكوين
systemctl reload apache2

# التفعيل عند بدء التشغيل
systemctl enable apache2

# التعطيل عند بدء التشغيل
systemctl disable apache2

# عرض جميع الخدمات
systemctl list-units --type=service

# عرض الخدمات النشطة
systemctl list-units --type=service --state=running

ملفات الوحدة​

يتم تعريف الخدمات بواسطة ملفات الوحدة في /etc/systemd/system/ أو /lib/systemd/system/:

مثال على خدمة بسيطة:

[Unit]
Description=خدمتي المخصصة
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mon-service
Restart=always
User=monuser

[Install]
WantedBy=multi-user.target

الأقسام:

  • [Unit]: البيانات الوصفية والاعتمادات
  • [Service]: تكوين الخدمة
  • [Install]: التثبيت والتفعيل

أنواع الخدمات​

النوع البسيط​

خدمة تبدأ وتبقى نشطة:

Type=simple
ExecStart=/usr/bin/mon-service

النوع المتشعب​

خدمة تتشعب وينتهي الوالد:

Type=forking
ExecStart=/usr/bin/mon-service
PIDFile=/var/run/mon-service.pid

النوع الفوري​

خدمة تعمل مرة واحدة وتنتهي:

Type=oneshot
ExecStart=/usr/bin/script-init
RemainAfterExit=yes

الاعتمادات​

يمكن أن تكون للخدمات اعتمادات:

[Unit]
Description=خدمة ويب
After=network.target mysql.service
Requires=mysql.service
Wants=redis.service

التوجيهات:

  • After: يبدأ بعد هذه الخدمات
  • Before: يبدأ قبل هذه الخدمات
  • Requires: اعتماد إلزامي
  • Wants: اعتماد اختياري

ملخص​

في هذا الفصل، تعلمت:

الخدمات/العمليات الخلفية: برامج تعمل في الخلفية
systemd: مدير خدمات حديث
systemctl: أوامر الإدارة
ملفات الوحدة: تكوين الخدمات
الاعتمادات: After, Before, Requires, Wants
الأنواع: simple, forking, oneshot


الخطوات التالية​

الفصل 2.8: مستويات التشغيل
الفصل 2.9: عملية الإقلاع


تم إنشاء الفصل في: ديسمبر 2024