إدارة خدمات Systemd: دليل start وstop وenable
دليل شامل لأوامر systemctl وملفات unit وإنشاء خدمات مخصصة ومراقبة السجلات بـ journalctl واستكشاف أخطاء systemd على خوادم Linux.
جدول المحتويات
إدارة خدمات Systemd: دليل start وstop وenable
Systemd هو نظام التهيئة ومدير الخدمات المستخدم في معظم توزيعات Linux الحديثة. على Ubuntu وDebian وCentOS وAlmaLinux وRHEL، يتولى systemd كل شيء من بدء تشغيل النظام إلى إدارة الخدمات. يغطي هذا الدليل أوامر systemctl وملفات unit وإنشاء خدمات مخصصة.
ما هو Systemd؟
Systemd هو أول عملية تبدأ بعد نواة Linux (PID 1). تشمل مهامه:
- بدء وإيقاف خدمات النظام
- إدارة التبعيات بين الخدمات
- جمع سجلات النظام (journald)
- مراقبة حالة النظام
حلّ systemd محل نظام التهيئة القديم SysV. رغم أن سكريبتات /etc/init.d/ لا تزال تعمل، إلا أن ملفات unit لـ systemd هي الأسلوب المفضل الآن.
أوامر systemctl الأساسية
التحقق من حالة الخدمة
# عرض حالة الخدمة
sudo systemctl status nginx
# التحقق من تشغيل الخدمة
sudo systemctl is-active nginx
# التحقق من تفعيل الخدمة
sudo systemctl is-enabled nginx
# سرد جميع الخدمات الجارية
sudo systemctl list-units --type=service --state=running
# سرد الخدمات الفاشلة
sudo systemctl list-units --type=service --state=failed
تشغيل وإيقاف الخدمات
# تشغيل خدمة
sudo systemctl start nginx
# إيقاف خدمة
sudo systemctl stop nginx
# إعادة تشغيل خدمة (إيقاف + تشغيل)
sudo systemctl restart nginx
# إعادة تحميل الإعدادات دون إيقاف
sudo systemctl reload nginx
# إعادة التحميل إن أمكن، وإلا إعادة التشغيل
sudo systemctl reload-or-restart nginx
تفعيل وتعطيل الخدمات
# تفعيل التشغيل التلقائي عند الإقلاع
sudo systemctl enable nginx
# تشغيل الخدمة وتفعيل التشغيل التلقائي
sudo systemctl enable --now nginx
# تعطيل التشغيل التلقائي
sudo systemctl disable nginx
# إيقاف الخدمة وتعطيلها
sudo systemctl disable --now nginx
# إخفاء الخدمة (منع تشغيلها)
sudo systemctl mask nginx
# إلغاء الإخفاء
sudo systemctl unmask nginx
ملفات unit في Systemd
تحدد ملفات unit كيفية إدارة systemd للخدمات. يوجد موقعان رئيسيان:
/lib/systemd/system/— ملفات unit المثبتة بواسطة مدير الحزم/etc/systemd/system/— ملفات unit التي أنشأها/خصصها مدير النظام
# عرض ملف unit للخدمة
sudo systemctl cat nginx
# إيجاد موقع ملف unit
sudo systemctl show nginx --property=FragmentPath
# سرد جميع ملفات unit
sudo systemctl list-unit-files --type=service
هيكل ملف unit
يحتوي ملف .service على ثلاثة أقسام رئيسية:
[Unit]
Description=Nginx HTTP Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
إنشاء خدمة مخصصة
مثال: خدمة تطبيق Node.js
# إنشاء ملف unit
sudo nano /etc/systemd/system/myapp.service
[Unit]
Description=My Node.js Application
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment=NODE_ENV=production
Environment=PORT=3000
[Install]
WantedBy=multi-user.target
# إخبار systemd بملف unit الجديد
sudo systemctl daemon-reload
# تشغيل الخدمة وتفعيلها
sudo systemctl enable --now myapp
# التحقق من الحالة
sudo systemctl status myapp
إدارة السجلات مع journalctl
# عرض سجلات خدمة معينة
sudo journalctl -u nginx
# آخر 50 سطر
sudo journalctl -u nginx -n 50
# متابعة السجلات في الوقت الفعلي
sudo journalctl -u nginx -f
# سجلات الساعة الأخيرة
sudo journalctl -u nginx --since "1 hour ago"
# سجلات الأخطاء فقط
sudo journalctl -u nginx -p err
# التحقق من حجم السجلات
sudo journalctl --disk-usage
# تنظيف السجلات القديمة
sudo journalctl --vacuum-time=2weeks
استكشاف الأخطاء وإصلاحها
الخدمة لا تبدأ
# الحصول على حالة مفصلة
sudo systemctl status myapp -l
# فحص السجلات الأخيرة
sudo journalctl -u myapp -n 100 --no-pager
# التحقق من صحة ملف unit
sudo systemd-analyze verify /etc/systemd/system/myapp.service
نسيان تشغيل daemon-reload
# شغّل دائماً بعد تعديل ملف unit
sudo systemctl daemon-reload
عند تطوير خدمة، ابدأ بـ Type=simple وRestart=on-failure. حسّن الإعدادات الأخرى بعد استقرار الخدمة.
مؤقتات Systemd (بديل Cron)
[Unit]
Description=Daily Backup Timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
# تفعيل المؤقت
sudo systemctl enable --now backup.timer
# سرد جميع المؤقتات
sudo systemctl list-timers
الخلاصة
Systemd هو حجر الأساس لإدارة خوادم Linux الحديثة. يتيح لك تعلم أوامر systemctl وهيكل ملفات unit إدارة الخدمات بشكل موثوق. على خوادم REXE، يمكنك إنشاء خدمات مخصصة لضمان تشغيل تطبيقاتك تلقائياً بعد إعادة تشغيل النظام.
مقالات ذات صلة
الاتصال بخادم VDS عبر SSH: PuTTY والطرفية والمفاتيح
دليل شامل للاتصال بخادم Linux VDS عبر SSH: PuTTY، الطرفية، المصادقة بالمفتاح، إنشاء قاعدة تصفية Path Panel، تغيير المنفذ ونصائح الأمان الأساسية.
الاتصال بـ Windows VDS عبر RDP: دليل شامل للمبتدئين
دليل خطوة بخطوة للاتصال بـ Windows Server VDS عبر RDP: الإعداد الكامل، تفعيل NLA للأمان، إنشاء قاعدة تصفية Path Panel واستكشاف الأخطاء وإصلاحها.
تغيير نظام تشغيل خادم VDS: دليل إعادة التثبيت خطوة بخطوة
تغيير نظام تشغيل خادم VDS عبر لوحة REXE: نصائح النسخ الاحتياطي قبل التثبيت، توزيعات Linux المدعومة وإصدارات Windows Server المتاحة للتثبيت الآن.