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

ابنِ سجل هوية قبل أن تتصرف

أربع حقائق تجعل العملية قابلة للتعريف: معرف العملية الحالي مع وقت بدايته، والملف التنفيذي والمنتج الذي ينتمي إليه، وسياق المستخدم أو الصلاحيات الذي يعمل ضمنه، وأي شيء بدأه. ps -o pid,ppid,user,etime,command -p 1234 يمنحك الثلاثة الأولى في سطر واحد، بما في ذلك المدة التي ظلت فيها العملية حية. يعرض Activity Monitor المعلومات نفسها بوجه أكثر ودية. أضف المتحكم، أي التطبيق أو الخدمة المسؤولة عن بدئها وإيقافها. بهذه الأربعة تتوقف العملية عن كونها اسماً وتصبح كائناً يمكنك التفكير فيه.

إذا كان أحد الأربعة مجهولاً، فتوقف عند هذا الحد. المكوّن غير المألوف سؤال للمطور أو للمسؤول، وليس تجربة.

معرف العملية في سجل قديم يعود الآن لشخص آخر

يُعاد استخدام معرفات العمليات، وقد يشير رقم منسوخ من سجل الأمس الآن إلى شيء لا صلة له إطلاقاً. قارن وقت البدء بطابع الوقت في السجل قبل استخلاص أي استنتاج. الأمر نفسه ينطبق على اسم قصير: قد تصدر نسختان من منتج واحد مساعدات بأسماء متطابقة وأغراض مختلفة. الهوية هي المجموعة، وليست الرقم وحده أبداً.

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

أوقف عبر المالك، لا عبر الإشارة

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

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

لماذا يعيد المشرف تشغيل ما قتلته

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

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

سجّل حدث دورة الحياة، لا القتل

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

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

مقالات ذات صلة