إدارة خدمات النظام باستخدام systemd
تحكّم في البرامج طويلة التشغيل التي تشغّل خادم Linux باستخدام systemd: ابدأ الخدمات وأوقفها ومكّنها وافحصها، واقرأ سجلاتها باستخدام journalctl، وافهم كيفية اندراج الوحدات ضمن إدارة العمليات.
إدارة خدمات النظام باستخدام systemd درس مجاني في Linux Server Deployment & SSH Mastery على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Linux Server Deployment & SSH Mastery، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Linux Server Deployment & SSH Mastery 4 دروس في المجموع.
الخدمات مقابل العمليات العادية
لقد أدرت عمليات فردية ومهام مجدولة. لكن البرامج التي تشكّل الخادم — مثل خوادم الويب وقواعد البيانات وSSH — تعمل كـخدمات: وهي عفاريت تعمل في الخلفية، وينبغي أن تبدأ عند الإقلاع وأن تُعاد تشغيلها عند تعطلها.
في Linux الحديث، يدير الخدماتَ systemd، وهو مدير النظام والخدمات.
ما الذي يديره systemd
ينظّم systemd كل شيء في صورة وحدات. والنوع الأكثر شيوعًا هو وحدة .service، التي تصف كيفية تشغيل عفريت.
يُعد الأمر systemctl واجهتك الرئيسية لفحص هذه الوحدات والتحكم فيها.
systemctl --versionالتحقق من حالة الخدمة
يعرض systemctl status ما إذا كانت الخدمة قيد التشغيل، ومعرّف العملية الرئيسية لها، وأحدث أسطر السجل، وما إذا كانت مفعّلة عند الإقلاع.
عادةً ما يكون هذا أول أمر تشغّله عند استكشاف مشكلة في خدمة.
systemctl status nginxبدء الخدمات وإيقافها
يمكنك التحكم في حالة تشغيل الخدمة باستخدام start وstop وrestart. تسري هذه الأوامر فورًا، لكنها لا تغيّر سلوك الإقلاع.
استخدم reload عندما تدعم الخدمة إعادة قراءة إعداداتها دون قطع الاتصالات.
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl stop nginxتمكين الخدمات عند الإقلاع
يجعل enable الخدمة تبدأ تلقائيًا عند إقلاع الخادم، بينما يزيلها disable من الإقلاع. وهذا مستقل عن كونها قيد التشغيل حاليًا أم لا.
تتيح الراية --now المفيدة تمكين الخدمة وبدء تشغيلها في خطوة واحدة.
sudo systemctl enable nginx
sudo systemctl enable --now nginx
sudo systemctl disable nginxسرد الخدمات
لمعرفة ما هو مثبّت وقيد التشغيل، اعرض ملفات الوحدات أو الوحدات النشطة.
list-units --type=service— الخدمات المحمّلة حاليًاlist-unit-files --type=service— جميع الخدمات المثبّتة وحالة تمكينها
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=serviceقراءة السجلات باستخدام journalctl
يلتقط systemd مخرجات الخدمات في السجل. استعلم عنه باستخدام journalctl.
-u nginx— هذه الخدمة فقط-f— متابعة السجل مباشرة-e— الانتقال إلى النهاية
sudo journalctl -u nginx -f
sudo journalctl -u ssh --since '1 hour ago'بنية ملف الوحدة
تُعرَّف الخدمة بواسطة ملف وحدة، يوجد عادةً في /etc/systemd/system/ أو /lib/systemd/system/. ويتضمن ثلاثة أقسام رئيسية: [Unit] و[Service] و[Install].
يخبر السطر ExecStart systemd بالأمر الذي يجب تشغيله.
[Unit]
Description=My App
After=network.target
[Service]
ExecStart=/usr/bin/myapp --port 8080
Restart=on-failure
[Install]
WantedBy=multi-user.targetإنشاء خدمتك الخاصة
لتشغيل برنامجك الخاص كخدمة، ضع ملف وحدة في /etc/systemd/system/، ثم أعد تحميل systemd لكي يتعرف على الملف الجديد، وبعد ذلك فعّله وابدأ تشغيله.
يلزم تنفيذ daemon-reload بعد أي تغيير في ملف وحدة.
sudo nano /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
sudo systemctl enable --now myappإعادة التشغيل تلقائيًا عند الفشل
من أفضل ميزات systemd الاسترداد التلقائي. يحدّد التوجيه Restart= أن يعيد تشغيل الخدمة المتعطلة.
Restart=on-failure— فقط بعد خروج برمز غير صفريRestart=always— كلما توقفتRestartSec=5— الانتظار قبل إعادة المحاولة
[Service]
ExecStart=/usr/bin/myapp
Restart=always
RestartSec=5أفضل الممارسات
أدِر الخدمات بثقة:
- ميّز بين وقت التشغيل (
start) والإقلاع (enable) - شغّل
daemon-reloadبعد تعديل ملفات الوحدات - استخدم
journalctl -uلتصحيح الأخطاء بدلًا من ملفات السجل المتناثرة - أضف
Restart=on-failureإلى التطبيقات المخصصة لتعزيز قدرتها على الصمود
تحقق سريع
اختبر معرفتك بـ systemd.
مراجعة
يمكنك الآن إدارة خدمات الخادم باستخدام systemd:
statusوstartوstopوrestartوreloadenable/disableللتحكم في سلوك الإقلاعjournalctl -uلسجلات الخدمة- ملفات وحدات
.serviceمخصصة تتضمنRestart=لتعزيز القدرة على الصمود
بهذا تكتمل مهاراتك في إدارة العمليات والمهام مع العفاريت طويلة التشغيل.
الأسئلة الشائعة
هل درس «إدارة خدمات النظام باستخدام systemd» مجاني؟
نعم — نص درس «إدارة خدمات النظام باستخدام systemd» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Linux Server Deployment & SSH Mastery، انتقل إلى CoddyKit PRO. تتضمن دورة Linux Server Deployment & SSH Mastery 4 دروس في المجموع.
ماذا ستتعلم في «إدارة خدمات النظام باستخدام systemd»؟
تحكّم في البرامج طويلة التشغيل التي تشغّل خادم Linux باستخدام systemd: ابدأ الخدمات وأوقفها ومكّنها وافحصها، واقرأ سجلاتها باستخدام journalctl، وافهم كيفية اندراج الوحدات ضمن إدارة العمليات. تتمرن على Linux Server Deployment & SSH Mastery مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Linux Server Deployment & SSH Mastery؟
لا تُشترط خبرة سابقة. Linux Server Deployment & SSH Mastery على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «إدارة خدمات النظام باستخدام systemd»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Linux Server Deployment & SSH Mastery هذا؟
نعم. كل درس في Linux Server Deployment & SSH Mastery يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إدارة المستخدمين والمجموعات
- مراقبة عمليات النظام
- المهام المجدولة باستخدام Cron
- إدارة خدمات النظام باستخدام systemd