إذا كنت تستخدم توزيعة Linux حديثة، فمن المؤكد أنك ستصادف رسالة “A stop job is Running” أثناء إيقاف التشغيل، وستتوقف عملية إيقاف التشغيل مؤقتًا لمدة تصل إلى 90 ثانية. تعرف على سبب ظهور هذه الرسالة، وكيف يمكنك التخفيف منها.

إنها ميزة أمان وليست خطأ

أول شيء تحتاج إلى معرفته هو أن رسالة “يتم تشغيل مهمة الإيقاف” هي ميزة أمان مضمنة في النظام، وليست خطأً.

تستخدم توزيعات Linux الحديثة مثل Ubuntu وFedora وArch نظام Systemd لإدارة عمليات التمهيد وإيقاف التشغيل. عند النقر فوق إيقاف التشغيل، لا يقوم Systemd بسحب قابس الطاقة فقط. يرسل إشارة مهذبة تسمى سيجتيرم إلى كل خدمة وتطبيق قيد التشغيل. تقوم معظم التطبيقات، بعد تلقي هذه الإشارة، بحفظ بياناتها وإغلاق ملفاتها وإغلاقها بأمان.

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

يبحث العديد من مستخدمي Linux عن الإصلاحات عندما يرون رسالة “A Stop Job is Running”، على افتراض وجود شيء معطل. الحقيقة هي أن مطوري Systemd بنوا هذا السلوك عن قصد. في الأساس، هي فترة الانتظار، التي تبلغ عادةً 90 ثانية، التي يقدمها Systemd للخدمات لإنهاء مهامهم المعلقة. إذا لم تنتهي الخدمة خلال المهلة التي تم تكوينها، فسيقوم Systemd بإنهائها بالقوة باستخدام سيجكيل ويستمر في عملية إيقاف التشغيل.

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

تقليل المهلة الافتراضية

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

مهما كان السبب، يمكنك تعديل ملف تكوين النظام وتقليل المهلة عن طريق إخبار systemd بمنح الخدمات غير المكتملة عددًا محددًا من الثواني لإكمال مهامها.

للبدء، قم بتشغيل جهازك الطرفي واستخدم محرر النصوص المفضل لديك لتحرير ملف تكوين النظام:

sudo nano /etc/systemd/system.conf
عرض ملف تكوين Systemd على المحطة الطرفية

بعد ذلك، حدد موقع متغير المهلة. سترى الكثير من النص الذي يمثل الإعدادات العامة لنظامك. ابحث عن خط مشابه لـ #DefaultTimeoutStopSec=90s. رمز التجزئة الموجود في بداية السطر يعني أنه تم التعليق عليه أو تعطيله. يستخدم النظام حاليًا إعداداته الافتراضية الداخلية، والتي تبلغ 90 ثانية.

لتعديل القيمة، قم أولاً بإزالة رمز التجزئة لتنشيط الخط، ثم قم بتغيير 90 ثانية إلى مدة أقصر بناءً على تفضيلاتك.

تحذير: لا تقم بتعيين هذه القيمة على 0. يؤدي تعيينها إلى 0 إلى إنشاء مهلة لا نهائية، مما يعني أن النظام سينتظر إلى الأبد حتى تتوقف العملية. وهذا عكس ما نريد. تعد القيمة متوسطة المدى (20-30 ثانية) بمثابة حل وسط عملي للعديد من المستخدمين.

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

ملحوظة: في بعض الحالات، قد تحتاج إلى تمكين #DefaultDeviceTimeoutSec=90s جدا لكي تعمل.

عندما تشير المهلة إلى وجود مشكلة

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

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

لتحديد الخدمة المسببة للتأخير، تحقق من السجلات بعد إعادة التشغيل من إيقاف التشغيل البطيء:

journalctl -b -1 -e
تحديد الخدمة المسببة للتأخير باستخدام Journalctl

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

بالإضافة إلى ذلك، يمكنك أيضًا تضييق نطاق الأمور من خلال عرض رسائل مستوى التحذير:

journalctl -b -1 -p warning
عرض رسائل مستوى التحذير الخاصة بـ Journalctl

هناك فحص مفيد آخر وهو تشغيل أمر تحليل Systemd:

systemd-analyze blame

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

  • خدمات الشبكة
  • أنظمة الملفات البعيدة مثل NFS أو SMB
  • خوادم قواعد البيانات
  • مديري الحاويات والأجهزة الافتراضية
  • محركات الأقراص الخارجية، ووحدات التثبيت التلقائي

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

الأفكار النهائية

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


اكتشاف المزيد من موقع اشراقات- التقنية تشرق

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

شاركها.
اترك تعليقاً

اكتشاف المزيد من موقع اشراقات- التقنية تشرق

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

متابعة القراءة