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

مختبر 8.1 - إدارة خدمات systemd

الأهداف​

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

  • استخدام systemctl لإدارة الخدمات
  • فهم حالات الخدمات
  • بدء، إيقاف، إعادة تشغيل الخدمات
  • تفعيل/تعطيل الخدمات عند الإقلاع
  • عرض سجلات الخدمات

المتطلبات​

  • تثبيت Ubuntu 24.04
  • وصول sudo
  • فتح الطرفية

التمرين 1: الأوامر الأساسية​

الخطوة 1: عرض حالة خدمة​

# حالة خدمة
systemctl status sshd
# أو
systemctl status ssh

# حالة مختصرة
systemctl is-active sshd
systemctl is-enabled sshd
systemctl is-failed sshd

الخطوة 2: قائمة الخدمات​

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

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

# الخدمات غير النشطة
systemctl list-units --type=service --state=inactive

# الخدمات الفاشلة
systemctl list-units --type=service --state=failed

التمرين 2: التحكم في الخدمات​

الخطوة 1: بدء/إيقاف​

# بدء خدمة
sudo systemctl start sshd

# إيقاف خدمة
sudo systemctl stop sshd

# إعادة تشغيل
sudo systemctl restart sshd

# إعادة تحميل التكوين (إذا كان مدعومًا)
sudo systemctl reload sshd

الخطوة 2: التفعيل عند الإقلاع​

# تفعيل (تشغيل تلقائي)
sudo systemctl enable sshd

# تعطيل
sudo systemctl disable sshd

# تفعيل وبدء
sudo systemctl enable --now sshd

الخطوة 3: إخفاء خدمة​

# إخفاء (يمنع التشغيل اليدوي أيضًا)
sudo systemctl mask sshd

# إلغاء الإخفاء
sudo systemctl unmask sshd

التمرين 3: سجلات الخدمات​

الخطوة 1: journalctl​

# سجلات خدمة
sudo journalctl -u sshd

# آخر الأسطر
sudo journalctl -u sshd -n 50

# المتابعة في الوقت الحقيقي
sudo journalctl -u sshd -f

# سجلات منذ اليوم
sudo journalctl -u sshd --since today

# سجلات لفترة معينة
sudo journalctl -u sshd --since "2024-12-01" --until "2024-12-31"

الخطوة 2: مستويات السجل​

# حسب الأولوية
sudo journalctl -u sshd -p err
sudo journalctl -u sshd -p warning

# التوليفات
sudo journalctl -u sshd -p err --since "1 hour ago"

التمرين 4: خدمات النظام​

الخطوة 1: الخدمات الأساسية​

# عرض خدمات النظام
systemctl list-units --type=service | grep systemd

# حالة systemd
systemctl status

# الخدمات الحرجة
systemctl list-units --type=service --state=failed

الخطوة 2: تحليل التبعيات​

# تبعيات خدمة
systemctl list-dependencies sshd

# الخدمات التي تعتمد على sshd
systemctl list-dependencies --reverse sshd

التمرين 5: ممارسة مع nginx​

الخطوة 1: التثبيت والتكوين​

# تثبيت nginx
sudo apt update
sudo apt install -y nginx

# التحقق من الحالة
systemctl status nginx

# بدء
sudo systemctl start nginx

# التفعيل عند الإقلاع
sudo systemctl enable nginx

الخطوة 2: الإدارة​

# إعادة تشغيل
sudo systemctl restart nginx

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

# عرض السجلات
sudo journalctl -u nginx -f

الخطوة 3: الاختبار​

# اختبار الخدمة
curl http://localhost

# عرض العمليات
ps aux | grep nginx

التمرين 6: سكربت الإدارة​

الخطوة 1: سكربت أساسي​

# سكربت لإدارة خدمة
cat > manage-service.sh << 'EOF'
#!/bin/bash
SERVICE=$1
ACTION=$2

if [ -z "$SERVICE" ] || [ -z "$ACTION" ]; then
echo "Usage: $0 service {start|stop|restart|status|enable|disable}"
exit 1
fi

case $ACTION in
start)
sudo systemctl start "$SERVICE"
;;
stop)
sudo systemctl stop "$SERVICE"
;;
restart)
sudo systemctl restart "$SERVICE"
;;
status)
systemctl status "$SERVICE"
;;
enable)
sudo systemctl enable "$SERVICE"
;;
disable)
sudo systemctl disable "$SERVICE"
;;
*)
echo "Action inconnue: $ACTION"
exit 1
;;
esac
EOF

chmod +x manage-service.sh

# الاستخدام
./manage-service.sh nginx status
./manage-service.sh nginx restart

التحقق​

قائمة التحقق​

تحقق من أنك تستطيع:

  • عرض حالة الخدمات (systemctl status)
  • قائمة الخدمات (list-units)
  • بدء/إيقاف الخدمات
  • تفعيل/تعطيل عند الإقلاع
  • عرض السجلات (journalctl)
  • تحليل التبعيات
  • إدارة الخدمات الشائعة (nginx, sshd)

أسئلة للتفكير​

  1. ما الفرق بين start و enable؟

    • start: يبدأ الآن
    • enable: يفعل عند إقلاع النظام
  2. متى تستخدم reload مقابل restart؟

    • reload: يعيد تحميل التكوين بدون انقطاع
    • restart: يعيد التشغيل بالكامل (انقطاع)
  3. لماذا تستخدم journalctl بدلاً من /var/log؟

    • journalctl: سجلات مركزية systemd، أكثر حداثة
    • /var/log: سجلات تقليدية، متاحة دائمًا

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

  • مختبر 8.2: خدمات مخصصة
  • مختبر 8.3: Cron متقدم و systemd Timers
  • الفصل 8.1: إدارة خدمات systemd

تم إنشاء المختبر في: ديسمبر 2024 - تم اختباره على Ubuntu 24.04