أعد تشغيل الخدمة باستخدام أمر إعادة تشغيل systemctl

A D Tshghyl Alkhdmt Bastkhdam Amr A Adt Tshghyl Systemctl



ال systemd هو مدير خدمة النظام الذي يستخدم على نطاق واسع في نظام التشغيل Linux. لإدارة systemd الخدمات، systemctl يتم استخدام الأداة المساعدة لسطر الأوامر. تُستخدم هذه الأداة أيضًا لإعادة تشغيل أي خدمة systemd.

تتم إدارة الخدمات على Linux من خلال ملف التكوين الخاص بها. إذا تم إجراء تعديلات على ملف تكوين الخدمة، فمن الضروري بدء إعادة تشغيل الخدمة لتطبيق التعديلات. عند إعادة تشغيل الخدمة، يقوم النظام بإعادة تقييم ملف التكوين وتطبيق التعديلات.

في هذا الدليل، سوف أتناول كيفية استخدام systemctl لإعادة تشغيل خدمة ما في Linux.







ملحوظة: يتضمن هذا الدليل الأوامر والتعليمات التي يتم تنفيذها على Ubuntu 22.04. سيعمل الأمر دون أي مشاكل في التوزيعات التي تأتي مع مدير خدمة systemd.



أمر إعادة تشغيل systemctl

ال إعادة تشغيل يقوم الأمر بشكل أساسي بإيقاف الخدمة وتشغيلها مرة أخرى. إذا لم تكن الخدمة أو الوحدة قيد التشغيل، فسيبدأ أمر إعادة التشغيل في تشغيلها.



لا يؤدي أمر إعادة التشغيل إلى إزالة العمليات المرتبطة بالخدمة. خذ على سبيل المثال واصفات الملفات، وهي معرفات غير سالبة يعينها نظام التشغيل للملفات المفتوحة بواسطة الخدمة. إذا قمت بإعادة تشغيل خدمة ما، فسيظل واصف الملف المرتبط بهذه الخدمة موجودًا أثناء عملية إعادة التشغيل.





إذا كنت تريد مسح كافة العمليات المرتبطة بالخدمة، فأنت بحاجة إلى ذلك بشكل صريح قف الخدمة و يبدأ ذلك مرة أخرى.

كيفية إعادة تشغيل الخدمة

في Linux، يمكنك إعادة تشغيل الخدمة باستخدام نظام سودوctl أداة سطر الأوامر مع إعادة تشغيل الخيار وتحديد اسمه. ويرد بناء الجملة العام أدناه:



sudo إعادة تشغيل Systemctl [ اسم الخدمة ]

سوف تحتاج sudo امتيازات لإعادة تشغيل الخدمة.

على سبيل المثال، دعونا نعيد تشغيل سش خدمة.

sudo إعادة تشغيل Systemctl ssh.service

لإعادة تشغيل خدمات متعددة، قم بإلحاق اسم كل خدمة بعد إعادة تشغيل الأمر بمسافة.

sudo إعادة تشغيل systemctl ssh.service smbd.service

وترد أوامر إعادة التشغيل الأخرى في الجدول أدناه:

حاول إعادة التشغيل يقوم بإيقاف أو تشغيل الخدمة أو الخدمات المحددة وإذا لم تكن الخدمة قيد التشغيل، فلا يبدأ تشغيلها
إعادة التحميل أو إعادة التشغيل أعد تحميل الخدمة أو الخدمات المدعومة وإذا كانت الخدمة غير مدعومة فأعد تشغيلها وقم بتنشيطها
حاول إعادة التحميل أو حاول إعادة التشغيل أعد تحميل الخدمة أو الخدمات المدعومة وإذا كانت الخدمة غير مدعومة فأعد تشغيلها دون تفعيلها

في الأوامر المذكورة أعلاه، .خدمة التمديد اختياري.

كيفية إعادة تشغيل الخدمة تلقائيًا

في نظام التشغيل Linux، إذا فشلت إحدى الخدمات، فسيتم systemd إعادة تشغيله بشكل افتراضي. ومع ذلك، في كثير من الحالات، قد يكون من الضروري تعديل الطريقة التي يتم بها إعادة تشغيل الخدمة. على سبيل المثال، قد يحتاج المرء إلى إجراء يدوي أثناء عملية تصحيح أخطاء الخدمة المخصصة.

توجد ملفات وحدة systemd أو ملفات الخدمة على /etc/systemd/system أو /lib/systemd/system يعتمد بشكل أساسي على كيفية إنشاء الخدمة. لسرد ملفات الوحدة على Linux، استخدم الأمر التالي:

ليرة سورية / ليب / systemd / نظام

يمكنك رؤية ملفات التكوين للخدمات المختلفة. دعونا نفتح ssh.service الملف باستخدام نانو محرر.

sudo نانو / ليب / systemd / نظام / ssh.service

هنا يمكنك تعديل إعادة تشغيل جلسة. افتراضيًا، تم ضبطه على على الفشل . الخيارات الأخرى لإعادة تشغيل الخدمة مذكورة أدناه:

  • لا
  • دائماً
  • على النجاح
  • على الفشل
  • على غير طبيعي
  • على الإجهاض
  • على المراقبة

خيار آخر في ملف خدمة الوحدة هو إعادة تشغيل ثانية والذي يُستخدم لتحديد عدد الثواني التي سيتم بعدها إعادة تشغيل الخدمة.

[ خدمة ]

إعادة تشغيل =دائما

إعادة تشغيل ثانية = 5

تعني هذه الإرشادات أنه سيتم إعادة تشغيل الخدمة عند التمهيد، وإذا تمت مقاطعتها، فسيتم إعادة تشغيلها بعد 5 ثوانٍ.

بعد تعديل الإعداد، قم بتنفيذ الأمر التالي لتطبيق التغييرات.

sudo إعادة تحميل systemctl-daemon

الإعدادات الهامة الأخرى التي يجب أخذها بعين الاعتبار هي StartLimitIntervalSec و StartLimitBurst . تعد هذه الخيارات مفيدة لتعيين الحد الأقصى للوقت والحد الأقصى لعدد مرات إعادة تشغيل الخدمة.

[ وحدة ]

StartLimitIntervalSec = 300

StartLimitBurst = 4

تشير التعليمات المذكورة أعلاه إلى أن النظام سيتوقف تلقائيًا عن محاولة إعادة تشغيل الخدمة إذا لم تبدأ بعد 300 ثانية و4 مرات إعادة المحاولة.

للتحقق مما إذا كانت الخدمة ستتم إعادة تشغيلها بعد 5 ثوانٍ أم لا، قم بإنهاء الخدمة باستخدام معرف المنتج (PID) الخاص بالخدمة وملف قتل يأمر.

sudo قتل -9 [ معرف المنتج ]

بعد 5 ثوان، سيتم إعادة تشغيل الخدمة؛ استخدم ال Journalctl أمر للتحقق من حالة ssh.service .

Journalctl -في ssh.service

كيفية إعادة تشغيل الخدمة عند إعادة تشغيل الخدمة التابعة

في نظام التشغيل Linux، تكون العديد من الخدمات مترابطة، وبالمثل، يلزم إعادة تشغيلها عند إعادة تشغيل خدمة تابعة.

توجد ثلاثة خيارات مختلفة في ملف خدمة الوحدة لإعادة تشغيل الخدمة، مع إعادة تشغيل الخدمة التابعة.

  • جزء من
  • يربط
  • يتطلب

كل هذه الخيارات تؤدي نفس المهمة.

لنأخذ مثالاً على ssh.service الذي يعتمد على apparmor.service؛ وحدة أمان Linux لتوفير الوصول اللازم. لسرد تبعيات الخدمة في استخدام Linux systemctl مع تبعيات القائمة اسم الأمر والخدمة.

تبعيات قائمة systemctl ssh.service

لذلك، إذا كنت تريد إعادة تشغيل ssh.service عند إعادة تشغيل apparmor.service، فأنت بحاجة إلى تضمين خيار PartOf أو BindsTo أو Requires مع اسم الخدمة في القسم [Unit] من ملف apparmor.service.

افتح الملف apparmor.service.

sudo نانو / ليب / systemd / نظام / apparmor.service

أضف السطر التالي في قسم [الوحدة].

جزء من =ssh.service

احفظ الملف وقم بتنفيذ أمر daemon-reload.

sudo إعادة تحميل البرنامج الخفي systemctl

الآن، أعد تشغيل ssh.service ومن ثم التحقق من apparmor.service سجل.

ستلاحظ apparmor.service أعيد تشغيله في نفس الوقت ssh.service إعادة تشغيل.

خاتمة

لإعادة تشغيل خدمة أو خدمات على نظام التشغيل Linux، قم ب systemctl يتم استخدام الأمر مع إعادة تشغيل خيار. ال systemctl هي أداة مساعدة لسطر الأوامر تستخدم لإدارة خدمات systemd. ال إعادة تشغيل الخيار يبدأ الخدمة ثم يوقفها، مما يؤدي إلى تنشيط خدمة غير نشطة. ومع ذلك، يمكنك إعادة تشغيل الخدمة دون تنشيطها باستخدام حاول إعادة التشغيل خيار.