- يُعد systemctl الواجهة الأساسية لإدارة خدمات ووحدات وأهداف systemd في معظم التوزيعات. لينكس التيار.
- يتيح لك بدء الخدمات وإيقافها وإعادة تشغيلها وإعادة تحميلها وتمكينها وتعطيلها، بالإضافة إلى فحص حالتها وتوابعها وملفات محرك الأقراص.
- تستبدل الأهداف (.target) مستويات التشغيل الكلاسيكية وتسهل تغيير الحالة العامة للنظام (متعدد المستخدمين، رسومي، إنقاذ، إيقاف التشغيل أو إعادة التشغيل).
- يُعد تحرير الوحدات المتحكم به والاستخدام المشترك لـ systemctl مع journalctl أمرًا أساسيًا لتصحيح الأخطاء والحفاظ على نظام مستقر.

للسيطرة systemctl و systemd يُعدّ هذا البرنامج ضروريًا للغاية هذه الأيام لإدارة خوادم أو أنظمة لينكس الحديثة. فهو بمثابة بوابة للتحكم في الخدمات التي تبدأ، وكيفية بدء تشغيلها، وما الذي فشل، والحالة الفعلية لنظامك في أي وقت. بمجرد إتقان استخدامه، ستوفر على نفسك الكثير من المتاعب وعمليات إعادة التشغيل غير الضرورية.
ستجد في هذا الدليل شرحاً منظماً مع أمثلة لكيفية الاستخدام systemctl لإدارة الخدمات والوحدات والأهدافكيفية سرد ما يحدث في النظام، وكيفية تعديل محركات الأقراص دون إتلاف أي شيء، وماذا تعني حالات مثل تمكين, مقنع o ساكنوأيضا حيل لإيقاف التشغيل أو إعادة التشغيل أو التبديل من الوضع الرسومي إلى الوضع النصي باستخدام أمر واحد. كل ذلك باستخدام الإسبانية من إسبانيا، مباشرة وعملية، مصممة بحيث يمكنك تطبيق ما تقرأه على أي توزيعة تعتمد على systemd (Ubuntu، Debian، RHEL، CentOS، Fedora، Arch، إلخ).
ما هو نظام systemd وما هو دور systemctl؟
في معظم التوزيعات الحالية، يعمل نظام systemd كنظام بدء التشغيل والبنية التحتية الأساسيةإنها العملية التي تبدأ مباشرة بعد النواة (عادةً كمعرف العملية 1) وهي المسؤولة عن بدء بقية الخدمات، وتركيب أنظمة الملفات، وإدارة التبعيات، والتحكم في الجلسات، وتسجيل الأحداث، وغير ذلك الكثير.
يتكون نظام systemd من البرامج الخفية والمكتبات والأدوات المساعدة التي تسمح بالاتصال مع نواة النظام ومساحة المستخدم: إدارة مجموعات التحكم (cgroups)، والمآخذ، والمؤقتات، ونقاط التحميل، وتكوين الشبكة الأساسي، ومزامنة الوقت، وحل الأسماء، والحاويات، و الأجهزة الافتراضيةوهو متوافق حتى مع البرامج النصية القديمة من نوع SysV وLSB، لذا يمكنه أن يحل محلها تمامًا نظام كلاسيكي.
ضمن هذا النظام البيئي بأكمله، systemctl هو "التحكم عن بعد" في systemdإنها الأداة المساعدة عبر الإنترنت لـ الأوامر التي تستخدمها من أجل:
- بدء الخدمات أو إيقافها أو إعادة تشغيلها أو إعادة تحميلها وأنواع أخرى من الوحدات.
- تفعيل أو تعطيل الوحدات حتى يتمكنوا من البدء (أو عدم البدء) بالنظام.
- تحقق من الحالة من الخدمات والأهداف والنظام بشكل عام.
- تحرير ملفات محرك الأقراص أو عرض تبعياته وخصائصه الداخلية.
- تغيير الحالة العامة من النظام (وضع الإنقاذ، متعدد المستخدمين، الرسومي، إيقاف التشغيل، إعادة التشغيل ...).
لاحظ أن بعض توزيعات لينكس لا تستخدم systemd. إذا حدث ذلك أثناء التشغيل systemctl سترى رسالة كهذه: bash: systemctl: command not found أو شيء مشابه؛ من المحتمل أن نظامك يستخدم نظام تهيئة مختلف (OpenRC، runit، SysV النقي، إلخ). في هذه الحالة، لا تنطبق الأوامر الواردة في هذا الدليل تل كوال.
محركات الأقراص وملفات محركات الأقراص في نظام systemd
المفهوم الأساسي في نظام systemd هو وحداتتمثل الوحدة أي مورد يستطيع نظام systemd إدارته: خدمة، مقبس، نقطة تحميل، جهاز، هدف عام للنظام، مؤقت... يتم تحديد كل نوع وحدة بواسطة اللاحقة في اسم الملف.
بعض أنواع الوحدات الأكثر شيوعًا التي ستراها عند العمل مع systemctl و systemd هي:
- . الخدمة: الخدمات والبرامج الخفية (nginx.service, سه.service، NetworkManager.service…).
- .قابس كهرباء: منافذ مرتبطة بالخدمات التي يتم تشغيلها عند الطلب.
- .جبل: نقاط تحميل نظام الملفات.
- .automount: تم تفعيل التجميعات التلقائية للاستخدام.
- .هدف: حالات النظام (multi-user.target، graphical.target، rescue.target...).
- .timer: مؤقتات تشغيل الخدمات في أوقات محددة.
- .جهازالأجهزة التي يديرها udev.
- .طريق: مراقبة المسارات على القرص التي تشغل الخدمات.
يتم تعريف كل وحدة في ملف الوحدةوهو ملف نصي يحتوي على أقسام مثل , , حيث يتم تفصيل الوصف والتبعيات والأوامر الخاصة بـ حذاء، المستخدم الذي يقوم بتشغيل الخدمة، إلخ. عادةً ما يتم تخزين هذه الملفات في:
- /lib/systemd/system/ o /usr/lib/systemd/system/: الوحدات التي تأتي مع العبوات.
- / الخ / سيستم دي / نظام /: الوحدات التي يحددها أو يستبدلها المسؤول.
عندما تعمل مع systemctlأنت تشير دائمًا تقريبًا إلى وحدات من نوع . الخدمةلكن إذا حذفت اللاحقة، يفترض نظام systemd افتراضيًا أنك تشير إلى خدمة. أي، systemctl start ssh y systemctl start ssh.service متكافئة.
توجد وحدات خاصة تسمى قوالب، والذي يتضمن اسمه @على سبيل المثال name@.serviceعند إنشاء قالب كـ name@miinstancia.serviceما تفعله هو إنشاء مثال محدد يمرر معرفًا; داخل ملف الوحدة، المتغير %i يتم استبداله بهذا المعرّف. ويُستخدم هذا بشكل شائع في أنفاق SSH وخدمات واجهة الشبكة، وما إلى ذلك.
تحقق مما إذا كان نظامك يستخدم systemd
قبل أن تُفرط في استخدام الأوامر، من الأفضل التحقق مما إذا كانت توزيعتك تستخدم بالفعل systemd كمعرف العملية 1تقترح العديد من الأدلة شيئاً بسيطاً مثل:
pstree | head -5
إذا رأيت عملية في أعلى الشجرة سيستم دييمكنك المتابعة دون أي مشكلة. إذا رأيت نظام بدء تشغيل مختلفًا، فستحتاج إلى استخدام الأدوات الخاصة بهذا النظام.
إدارة الخدمات الأساسية باستخدام systemctl
يركز التشغيل اليومي باستخدام systemd عادةً على بدء الخدمات وإيقافها وإعادة تشغيلها وإعادة تحميلهاتؤثر هذه الأوامر على الحالة الحالية للخدمة، وليس على ما إذا كانت ستبدأ تلقائيًا مع النظام أم لا.
إلى التحقق من حالة الخدمة، يمكنك استخدام:
systemctl status nombre_servicio.service
على سبيل المثال، لمعرفة كيفية أداء خدمة الشبكة systemd- شبكة د على نظام أوبونتو في وضع النص:
systemctl status systemd-networkd.service
يعرض هذا الأمر معلومات مفصلة إلى حد ما: الحالة (نشط، غير نشط، فاشل...)، عند تفعيله، معرف العملية الرئيسي، واستخدام وحدة المعالجة المركزية، وبعض رسائل السجل الأخيرة المفيدة جدًا لتشخيص المشاكل.
إذا كنت تريد شيئًا أكثر مباشرة، يمكنك استخدام هذه الاختلافات المحددة:
- systemctl is-active name.serviceيشير الرمز : إلى ما إذا كان التطبيق نشطًا (قيد التشغيل) أم لا.
- systemctl is-enabled name.serviceيشير هذا إلى ما إذا كان سيبدأ من البداية.
- systemctl is-failed name.service: يتحقق مما إذا كان قد دخل في حالة عطل.
على سبيل المثال، لمعرفة ما إذا كان systemd-networkd مفعلاً عند بدء التشغيل، يمكنك تشغيل الأمر التالي:
systemctl is-enabled systemd-networkd.service
وللتأكد مما إذا كان قد فشل في البدء في أي مرحلة:
systemctl is-failed systemd-networkd.service
بدء الخدمات وإيقافها وإعادة تشغيلها وإعادة تحميلها
إلى أوقف خدمة قيد التشغيلالترتيب المعتاد هو:
sudo systemctl stop nombre_servicio.service
ضع في اعتبارك أن هذا الإجراء يؤثر على النظام، لذا ستحتاج إلى امتيازات الإدارة، عادةً باستخدام sudoفي بعض الخدمات "العنيدة"، مثل systemd-networkd، سيؤدي إيقافها إلى إعادة تشغيلها على الفور إذا كانت هناك وحدة تتطلبها ولديها سياسات إعادة تشغيل تلقائية.
إذا توقفت الخدمة وتريد ابدأهايمكنك استخدام نفس النمط مع start:
sudo systemctl start systemd-networkd.service
عندما تقوم بتغيير ملف التكوين وترغب في تطبيق التغييرات، فإن أكثر ما يتم فعله هو أعد تشغيل الخدمة:
sudo systemctl restart nombre_servicio.service
يسمح العديد من الشياطين أعد تحميل إعداداتك دون إعادة تشغيل الجهاز بالكاملتجنب قطع الوصلات النشطة. في هذه الحالات، يُستخدم ما يلي:
sudo systemctl reload nombre_servicio.service
إذا كنت غير متأكد مما إذا كانت هذه الخدمة تدعم إعادة شحن الرصيد، يمكنك تجربة ما يلي:
sudo systemctl reload-or-restart nombre_servicio.service
مع هذا الأمر، يحاول systemctl إعادة التحميل أولاً وإذا لم تقم الوحدة بإعادة التحميل، فإنها تُعيد التشغيل بالكامل. وهذا مفيد جدًا عندما لا تتذكر السلوك المحدد لكل خدمة.
تفعيل وتعطيل الخدمات عند بدء التشغيل
كل ما رأيناه حتى الآن لا يؤثر إلا على الجلسة الحاليةإذا كنت ترغب في أن تبدأ خدمة ما تلقائيًا عند تشغيل النظام، فأنت بحاجة إلى قم بتفعيلهالأمر الأساسي هو:
sudo systemctl enable nombre_servicio.service
وبذلك، يقوم نظام systemd بإنشاء روابط رمزية من ملف خدمة النظام (عادةً في /lib/systemd/system o /etc/systemd/system) حتى دليل .wants بما يتوافق مع الهدف الذي ينبغي تفعيله فيه. على سبيل المثال، شيء من هذا القبيل:
/etc/systemd/system/multi-user.target.wants/nombre_servicio.service
إذا كنت تريد العكس تمامًا، أي منع بدء تشغيل الخدمة تلقائيًا قم بتعطيله عند بدء التشغيل التالي:
sudo systemctl disable nombre_servicio.service
يؤدي هذا إلى إزالة روابط التمهيد الرمزية، ولكن لا يؤدي ذلك إلى إيقاف الخدمة التي تعمل بالفعلوبالمثل، فإن تفعيل خدمة ما لا يؤدي إلى تشغيلها على الفور: لن تكون فعالة إلا بعد إعادة التشغيل التالية، إلا إذا قمت بدمج ما يلي:
sudo systemctl enable nombre_servicio.service
sudo systemctl start nombre_servicio.service
توفر بعض التوزيعات والأدوات اختصارات لـ قم بالتفعيل والتشغيل في نفس الوقتومع ذلك، فإن الطريقة القياسية مع systemctl هي عادةً تشغيل كلا الأمرين.
اطلع على الحالة العامة للوحدات
لا يقتصر استخدام systemctl على الوصول إلى الخدمات الفردية فحسب؛ بل يسمح أيضًا للحصول على نظرة عامة على النظامالأمر الأكثر شيوعًا هو:
systemctl list-units
تعرض هذه القائمة جميع الوحدات النشطة التي يمتلكها نظام systemd في الذاكرة. الأعمدة الرئيسية هي:
- UNITاسم الوحدة (على سبيل المثال،
sshd.service). - حمل: ما إذا تم تحميل ملف محرك الأقراص بشكل صحيح (تم التحميل، غير موجود، خطأ ...).
- فعالة: الحالة العامة (نشط، غير نشط، فاشل...).
- SUB: حالة فرعية أكثر وصفية (جاري التشغيل، تم الخروج، متوقف، فشل...).
- الوصفوصف موجز للوحدة.
إذا اتصلت systemctl بدون وسائطسترى نفس القائمة تقريبًا، فهذا هو سلوكها الافتراضي. وبما أنه لا يتم عرض سوى الوحدات النشطة، فسيظهر كل شيء تقريبًا مع LOAD=تم التحميل و ACTIVE=نشط.
لإضافة الوحدات غير النشطة أيضًا، يمكنك إضافة المؤشر. --all:
systemctl list-units --all
يمكنك أيضًا التصفية حسب الولاية باستخدام --state=على سبيل المثال، لعرض محركات الأقراص غير النشطة فقط:
systemctl list-units --all --state=inactive
أو قم بالتصفية حسب نوع الوحدة باستخدام --type=على سبيل المثال، لعرض الخدمات النشطة فقط:
systemctl list-units --type=service
اعرض جميع ملفات محرك الأقراص المثبتة
لا تعرض القائمة أعلاه إلا الوحدات التي حاول نظام systemd تحميلها. إذا كنت ترغب في معرفة المزيد. جميع محركات الأقراص الموجودة على القرصسواء استخدمتها أم لا، يجب عليك اللجوء إلى:
systemctl list-unit-files
هنا ينصب التركيز على ملفات الوحدة نفسها، وليس على حالتها في الذاكرة. سترى عمودين رئيسيين: ملف الوحدة y ولايةفي حالة STATE، تظهر قيم مثل ما يلي:
- تمكينتم ضبط الوحدة على التشغيل التلقائي.
- معاق: لم يتم ضبطه للتشغيل التلقائي.
- ساكنالوحدة ليس بها قسم
ولذلك لا يمكن تفعيلهاعادة ما يكون ذلك اعتمادًا على وحدات أخرى أو لأداء إجراء محدد. - مقنعالوحدة مغلقة تماماً؛ لا يمكن تشغيلها بأي شكل من الأشكال.
يمكنك أيضًا التصفية حسب الحالة، على سبيل المثال لعرض الوحدات المفعلة فقط:
systemctl list-unit-files --state=enabled
أو دمج عدة ولايات في استعلام واحد عن طريق فصلها بفواصل:
systemctl list-unit-files --state=enabled,failed
عرض تفاصيل وخصائص وتوابع الوحدة
إذا كنت تريد عرض المحتويات الفعلية لملف محرك الأقراص بما أن نظام systemd يستخدم الأمر الأكثر ملاءمة، فهو كالتالي:
systemctl cat nombre.service
يُظهر هذا الملف كما يراه نظام systemd، بما في ذلك أي أجزاء مُعدّلة من /etc/systemd/systemإنه مفيد للغاية للتأكد من أن تغييراتك قد تم أخذها في الاعتبار بالفعل.
لمعاينة شجرة التبعية يمكنك استخدام ما يلي من وحدة واحدة:
systemctl list-dependencies nombre.service
تكون المخرجات هرمية، توضح الأهداف والخدمات التي تدعم الخدمة المعنية. وحدات من النوع .هدف تعمل هذه العناصر كنقاط تجميع، وهي الوحيدة التي تُظهر تبعياتها بشكل متكرر افتراضيًا؛ إذا كنت ترغب في توسيع الشجرة بأكملها، فأضف --all.
إذا كان ما تحتاج إلى معرفته هو تعتمد الوحدات على الوحدة التي حددتها، يضيف --reverse إلى الأمر. وإذا كنت ترغب في التركيز على ترتيب الإقلاع، فاستخدم العلامات. --before y --after تُظهر هذه الوحدات التي يجب أن تبدأ قبل أو بعد الوحدة المستهدفة.
لرؤية كل شيء الخصائص الداخلية بالنسبة لوحدة بتنسيق المفتاح=القيمة، استخدم:
systemctl show nombre.service
وإذا كنت مهتمًا بعقار معين فقط، فيمكنك استخدام خاصية التصفية. -pعلى سبيل المثال، لعرض تعارضات sshd:
systemctl show sshd.service -p Conflicts
وحدات التغطية وإزالة التغطية
بالإضافة إلى تعطيل النظام، فإنه يسمح قم بإخفاء وحدة بحيث يستحيل تشغيلها تمامًاتُستخدم هذه التقنية عندما تريد التأكد بنسبة 100% من عدم تشغيل أي شيء، حتى عن طريق الخطأ. ويمكن القيام بذلك يدويًا أو بالاعتماد على وحدة أخرى.
يتم تطبيق الإخفاء عن طريق إنشاء رابط رمزي إلى /dev/null بدلاً من ملف القرص الفعلي. لإخفاء خدمة، على سبيل المثال nginx:
sudo systemctl mask nginx.service
ثم ركضت systemctl list-unit-files، سترى أن يظهر ملف nginx.service على أنه مُقنّعوإذا حاولت تشغيله:
sudo systemctl start nginx.service
ستتلقى رسالة كهذه: فشل بدء تشغيل خدمة nginx: تم إخفاء وحدة nginx.service. بمعنى آخر، الوحدة مدرعة. ولجعلها قابلة للاستخدام مرة أخرى، من الضروري أن اكشفي حقيقتها:
sudo systemctl unmask nginx.service
بعد ذلك، تعود الوحدة إلى حالتها السابقة (مفعلة، معطلة، ثابتة، إلخ) ويمكن بعد ذلك تشغيلها أو تفعيلها بشكل طبيعي.
قم بتحرير ملفات محرك الأقراص دون إتلاف النظام
أحيانًا تحتاج إلى تعديل سلوك خدمة ما: تغيير المستخدم الذي يشغلها، إضافة خيارات سطر الأوامر، تعديل التبعيات... بدلاً من تحرير الملفات يدويًا في /lib/systemd/systemأفضل شيء هو استخدام ما يخصك systemctl لإنشاء التجاوزات.
الأمر الأساسي هو:
sudo systemctl edit nombre.service
سيؤدي هذا إلى فتح محرر النصوص الافتراضي الخاص بك مع ملف مجزأ فارغعند الحفظ والخروج، سيقوم نظام systemd بإنشاء دليل في /etc/systemd/system/nombre.service.d/ وداخل ملف override.confعند تحميل القرص، يقوم نظام systemd بدمج الملف الأصلي مع هذا الجزء، وتوجيهات التجاوز. لديهم الأولوية على تلك الموجودة في الملف الأساسي.
إذا كنت ترغب في التعديل ملف محرك الأقراص الكامل بدلاً من التجاوز، يمكنك القيام بذلك باستخدام:
sudo systemctl edit --full nombre.service
في هذه الحالة، سيتم كتابة ما تقوم بحفظه إلى /etc/systemd/system/nombre.serviceوالتي لها الأولوية على إصدار النظام في /lib/systemd/systemإنها طريقة "لاستنساخ" محرك الأقراص وتخصيصه بالكامل دون المساس بالملفات التي تأتي مع الحزمة.
إذا قررت لاحقًا التراجع عن تغييراتك، فما عليك سوى احذف المجلد .d ملف التجاوز أو ملف الخدمة المعدل في /etc/systemd/system. على سبيل المثال:
sudo rm -r /etc/systemd/system/nginx.service.d
sudo rm /etc/systemd/system/nginx.service
بعد حذف هذه العناصر، من المهم جدًا تشغيل ما يلي:
sudo systemctl daemon-reload
هذا النظام القسري لـ أعد تحميل جميع ملفات محرك الأقراصتجاهل التعديلات التي تمت إزالتها وعد إلى استخدام تعريفات النظام الأصلية.
الأهداف وتكييف مستوى التشغيل
الكثير تُعد أهداف systemd المكافئ الحديث لمستويات التشغيل من SysV. إنها وحدات خاصة (تنتهي بـ .target) التي تجمع وحدات أخرى لتمثيل "حالات" أو نقاط تزامن النظام.
على سبيل المثال:
- multi-user.target: وضع وحدة التحكم متعددة المستخدمين، وهو وضع نموذجي للخوادم التي لا تحتوي على بيئة رسومية.
- Graphical.targetالوضع الرسومي؛ يعتمد عادةً على multi-user.target ويضيف طبقة واجهة المستخدم الرسومية.
- إنقاذ. الهدفوضع الإنقاذ، على غرار "وضع المستخدم الفردي".
- تبديل الهدف: النقطة التي تكون عندها منطقة التبادل جاهزة للاستخدام.
يمكن للوحدات أن تُعلن عن علاقات مثل مطلوب من قبل =، مطلوب من قبل =، يريد =، يتطلب =، بعد = مع هذه الأهداف لتوضيح ما تعتمد عليه وبالترتيب الذي ينبغي تحقيقها به.
قرأ ما هو الهدف المحدد مسبقاً؟ بالنسبة لنظامك (الحالة التي تريد الوصول إليها في عملية بدء تشغيل عادية)، استخدم:
systemctl get-default
على سبيل المثال، إذا كنت تفضل أن يبدأ النظام دائمًا في الوضع الرسومي، فيمكنك تغييره باستخدام:
sudo systemctl set-default graphical.target
لعرض جميع الأهداف المثبتة على النظام، مع حالتها (مفعلة، معطلة...)، يمكنك تشغيل الأمر التالي:
systemctl list-unit-files --type=target
وإذا كان ما تريد رؤيته ما هي الأهداف النشطة حاليًا؟يمكنك فعل ذلك باستخدام:
systemctl list-units --type=target
حدد الأهداف وغيّر أسلوب العمل
من أقوى الميزات التي يوفرها نظام systemd هي القدرة على تغيير حالة النظام عن طريق "عزل" هدفعند تنفيذ عملية عزل، يقوم نظام systemd بتنشيط جميع الوحدات اللازمة لهذا الهدف ويوقف تلك التي لم تعد تتناسب مع شجرة التبعية الخاصة به.
تخيل أنك في بيئة رسومية (نشطة) Graphical.targetوترغب في الانتقال إلى بيئة متعددة المستخدمين تعتمد على النصوص فقط، على سبيل المثال لمهام الصيانة. يمكنك أولاً التحقق من تبعيات ملف multi-user.target:
systemctl list-dependencies multi-user.target
وعندما تتأكد من أنك لن تُلحق الضرر بأي شيء بالغ الأهمية، تقوم بالإطلاق:
sudo systemctl isolate multi-user.target
بما أن graphical.target يعتمد على multi-user.target وليس العكس، فإن عزل هدف المستخدمين المتعددين سيوقفه. جميع الخدمات المرتبطة بطبقة الرسوماتسيتركك هذا في وضع النص. إنه تغيير جذري للغاية، لذا استخدمه بحكمة.
بالنسبة للأحداث الشائعة جدًا، يقدم systemctl اختصارات مريحة مقارنةً بالكتابة المعزولة يدويًا. ومن أكثر الطرق شيوعًا ما يلي:
- sudo systemctl rescue: يتحول إلى وضع الإنقاذ (ما يعادل عزل rescue.target) وينبه المستخدمين المتصلين.
- sudo systemctl halt: يوقف النظام (على غرار إيقاف تشغيل وحدة المعالجة المركزية دون قطع الطاقة).
- سودو systemctl poweroffأطفئ الجهاز تماماً.
- sudo systemctl إعادة التشغيل: يعيد تشغيل النظام.
عادةً، الأوامر الكلاسيكية مثل reboot, poweroff o halt إنها مرتبطة داخليًا للتواصل مع نظام systemd، لذا فهي تتصرف بشكل متسق مع هذه الاختصارات.
أوامر systemctl الأساسية الإضافية
بالإضافة إلى كل ما سبق، هناك بعض الأوامر لـ systemctl والتي يجب أن تحتفظ بها في متناول يدك لأنك ستستخدمها بشكل متكرر عند العمل مع الوحدات:
أعد تحميل إعدادات systemd (ليس الخدمات):
sudo systemctl daemon-reload
في كل مرة تقوم فيها بتعديل أو إضافة ملفات إلى محرك الأقراص، عليك إخطار systemd حتى يتمكن من إعادة قراءتها. هذا الأمر الخدمات لا تعيد التشغيلإنها تقوم فقط بإعادة تحميل قاعدة بيانات الوحدة.
تحقق من حالة الخدمة بالتفاصيل (تمت مناقشته بالفعل):
sudo systemctl status nombre_servicio.service
هنا سترى حالة التحميل، والحالة النشطة، ومعرف العملية، ووقت التشغيل، وأحدث رسائل السجل، وهو أمر لا يقدر بثمن لتصحيح الأخطاء.
تمكين وتعطيل الخدمات (يُشاهد أيضاً):
sudo systemctl enable nombre_servicio.service
sudo systemctl disable nombre_servicio.service
بدء الخدمات وإيقافها وإعادة تشغيلها بشكل صريح:
sudo systemctl start nombre_servicio.service
sudo systemctl stop nombre_servicio.service
sudo systemctl restart nombre_servicio.service
تتكرر هذه الأنماط مع أي خدمة تقريبًا، بدءًا من أباتشي 2 أو نجنكس أو إس إس إتش، حتى خدمات قواعد البياناتشياطين الانطباع أو أي شيء آخر يخطر ببالك.
إدارة الخدمة: بدء التشغيل، إعادة التحميل، الإيقاف، والمراقبة
في بيئة واقعية، ستستخدم systemctl للحفاظ على تشغيل الخدمات الأساسية باستمرار: خوادم الويب، قواعد البيانات، خدمات الشبكة، البرامج الخفية دعمإلخ. الفكرة هي التقليل تيمبو من عدم النشاط وتطبيق تغييرات التكوين بأقل تأثير ممكن.
إلى بدء خدمة إذا كان من المفترض أن يكون نشطًا (على سبيل المثال، Apache)، فسيكون الأمر النموذجي كالتالي:
sudo systemctl start apache2
إذا كان خادم أباتشي يعمل بالفعل، فلن تلاحظ أي شيء غير عادي؛ أما إذا توقف، فسيبدأ البرنامج الخفي عمليات فرعية ويبدأ بمعالجة الطلبات. عندما لا تكون متأكدًا مما حدث، نفّذ الأوامر التالية:
sudo systemctl status apache2
عند تغيير ملف التكوين الرئيسي أو بعض استضافة افتراضيةأنت عادة إعادة تحميل o تمهيد الخدمة. إعادة الشحن أصبحت أكثر سلاسة:
sudo systemctl reload apache2
يُمكّن هذا الخدمة من إعادة قراءة ملفات التكوين دون إيقاف العمليات الجارية، لذا بالكاد يلاحظ المستخدمون أي تغيير. إذا كانت الخدمة لا تدعم إعادة التحميل لأي سبب كان، فستحتاج إلى:
sudo systemctl restart apache2
في بعض الحالات، إذا كانت الخدمة تواجه مشاكل أو أصبحت غير مستجيبة، فقد يكون من الضروري إعادة تشغيلها بالكامل. يحرر الموارد وينظف العمليات العالقةإنها إحدى الخطوات التشخيصية المعتادة قبل البدء في البحث في الأمر. الجذوع في عمق.
إلى إيقاف الخدمة مؤقتًا لأنك تقوم بأعمال الصيانة أو لأنك ببساطة لا تحتاج إليه لفترة من الوقت:
sudo systemctl stop apache2
هذا لا يمنع إعادة تشغيله عند إعادة التشغيل التالية إذا كان مُفعّلاً. إذا كنت ترغب في إخفائه تمامًا حتى إشعار آخر، يمكنك استخدام أمر الإيقاف مع تعطيل القناع وذلك بحسب درجة "الحظر" التي ترغب في تطبيقها.
بعد أي عملية جراحية حساسة، يُنصح بشدة تحقق من حالة من الخدمة وأحدث سجلاتها مع:
sudo systemctl status nombre_servicio
وإذا كنت بحاجة إلى مزيد من السياق، فمع journalctlعلى سبيل المثال:
sudo journalctl -u nombre_servicio
استكشاف الأخطاء وإصلاحها في مشاكل systemctl الشائعة
عندما يحدث خطأ ما عند بدء خدمة مع systemctlمن الطبيعي رؤية رسائل مثل "فشلت المهمة X" أو حالات أخرى. فشل في حالة الخروج. الطريقة المنظمة للمتابعة عادةً هي:
1. عرض الحالة بالتفصيل من الوحدة:
sudo systemctl status nombre_servicio
ستجد هناك ما إذا كانت الخدمة لا تبدأ بسبب فشل أمر ما، أو انتهاء مهلة، أو مشاكل في الأذونات، أو ملف مفقود، وما إلى ذلك. انظر إلى سطور مثل "تم إنهاء العملية الرئيسية" ورسائل الخطأ الفعلية من التطبيق.
2. راجع السجلات الكاملة باستخدام journalctl:
sudo journalctl -u nombre_servicio
هذا يمنحك سجل الأحداث الذي تم إنشاؤه بواسطة الوحدة، وهو أمر مفيد للغاية إذا "توقفت" الخدمة مباشرة بعد بدء التشغيل.
3. تحقق مما إذا كان مفعلاً عندما تتوقع أن يبدأ التشغيل:
sudo systemctl is-enabled nombre_servicio
إذا ظهر على أنه معطل، فما عليك سوى:
sudo systemctl enable nombre_servicio
4. تحقق من الأذونات والمستخدمتتطلب بعض الخدمات التشغيل بصلاحيات مستخدم محدد أو الوصول إلى مسارات معينة. إذا حدد ملف الوحدة ذلك User= o Group= غير صحيح، أو المسار في ExecStart= إذا لم يكن موجودًا أو لم يكن متاحًا، فقد تتعطل الخدمة على الفور.
5. إذا قمت بتحرير ملف محرك الأقراص يدويًا، فتذكر دائمًا أعد تحميل إعدادات systemd مع:
sudo systemctl daemon-reload
إن نسيان هذه الخطوة خطأ شائع: تقوم بإجراء تغييرات، ثم تعيد تشغيل الخدمة، ولا تزال ترى السلوك القديم لأن systemd لم يقرأ الملف الجديد بعد.
إن الحفاظ على هذا الروتين من الفحوصات ومراجعة حالة الوحدات الرئيسية بشكل دوري يجعل الأمر أسهل بكثير. الحفاظ على نظام لينكس مستقر وقابل للتنبؤ.
كما ترى ، يصبح systemctl بمثابة الأداة متعددة الاستخدامات لإدارة خدمات النظام ووحداته وحالاته في أي توزيعة حديثة تستخدم systemd، يتيح لك هذا النظام بدء وإيقاف الخدمات بدقة، والتحكم في ما يبدأ عند الإقلاع، وفحص الأخطاء بتفصيل كبير، وتعديل الإعدادات دون الكتابة فوق ملفات النظام، والتبديل من الوضع الرسومي إلى وضع الإنقاذ في ثوانٍ. إن إتقان هذه الأوامر لا يُسهّل إدارة خوادم أو أجهزة سطح المكتب التي تعمل بنظام Linux فحسب، بل يمنحك أيضًا ثقة أكبر عند استكشاف أخطاء الإنتاج الخطيرة وإصلاحها، لأنك ستعرف بالضبط ما الذي يعمل، ولماذا، وكيفية إيقافه أو تعديله بأمان.
كاتب شغوف بعالم البايت والتكنولوجيا بشكل عام. أحب مشاركة معرفتي من خلال الكتابة، وهذا ما سأفعله في هذه المدونة، لأعرض لك كل الأشياء الأكثر إثارة للاهتمام حول الأدوات الذكية والبرامج والأجهزة والاتجاهات التكنولوجية والمزيد. هدفي هو مساعدتك على التنقل في العالم الرقمي بطريقة بسيطة ومسلية.