مختبر 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)
أسئلة للتفكير
-
ما الفرق بين start و enable؟
- start: يبدأ الآن
- enable: يفعل عند إقلاع النظام
-
متى تستخدم reload مقابل restart؟
- reload: يعيد تحميل التكوين بدون انقطاع
- restart: يعيد التشغيل بالكامل (انقطاع)
-
لماذا تستخدم journalctl بدلاً من /var/log؟
- journalctl: سجلات مركزية systemd، أكثر حداثة
- /var/log: سجلات تقليدية، متاحة دائمًا
الخطوات التالية
- مختبر 8.2: خدمات مخصصة
- مختبر 8.3: Cron متقدم و systemd Timers
- الفصل 8.1: إدارة خدمات systemd
تم إنشاء المختبر في: ديسمبر 2024 - تم اختباره على Ubuntu 24.04