پہلے سے چل رہے مددگار کے بارے میں پیغام کو زندگی کے چکر کا اشارہ سمجھیں، پروسیس مارنے کی اجازت نہیں۔ خطرناک قدم بند کرنا خود نہیں، بلکہ اس سے پہلے کی شناخت ہے، کیونکہ ایک ہی Mac پر مشابہ ناموں کے کئی اجزاء ہو سکتے ہیں اور ان میں سے صرف ایک کنکشن کا مالک ہوتا ہے۔ پہلے شناخت کا ریکارڈ بنائیں۔ پھر فیصلہ کریں کہ بند کرنا صحیح اقدام ہے یا نہیں۔

عمل سے پہلے شناخت کا ریکارڈ بنائیں

چار حقائق کسی پروسیس کو قابلِ شناخت بناتے ہیں: موجودہ PID مع آغاز کے وقت، وہ ایگزیکیوٹیبل فائل اور پروڈکٹ جس سے تعلق ہے، وہ صارف یا استحقاقی سیاق جس کے تحت چلتا ہے، اور وہ چیز جس نے اسے شروع کیا۔ ps -o pid,ppid,user,etime,command -p 1234 پہلے تین ایک ہی سطر میں دیتا ہے، اس بات سمیت کہ پروسیس کتنی دیر سے زندہ ہے۔ ایکٹیویٹی مانیٹر وہی معلومات آسان انداز میں دکھاتا ہے۔ کنٹرولر بھی شامل کریں، یعنی وہ ایپلیکیشن یا سروس جو اسے شروع اور بند کرنے کی ذمہ دار ہے۔ ان چار کے ساتھ پروسیس نام نہیں رہتا، غور و فکر کے قابل شے بن جاتا ہے۔

اگر ان چار میں سے کوئی ایک نامعلوم ہو تو وہیں رک جائیں۔ نامعلوم جزو ناشر یا منتظم کے لیے سوال ہے، تجربہ نہیں۔

پرانی لاگ میں موجود PID اب کسی اور کا ہے

پروسیس IDs دوبارہ استعمال ہوتے ہیں، اور کل کی لاگ سے نقل کیا گیا نمبر اب کسی بالکل غیر متعلق چیز کی طرف اشارہ کر سکتا ہے۔ کوئی نتیجہ اخذ کرنے سے پہلے آغاز کے وقت کا لاگ کے ٹائم اسٹیمپ سے موازنہ کریں۔ یہی بات مختصر نام پر بھی لاگو ہے: ایک پروڈکٹ کی دو بلڈیں ایک جیسے نام مگر مختلف مقاصد کے مددگار بھیج سکتی ہیں۔ شناخت ٹپل ہے، کبھی صرف نمبر نہیں۔

کوئی اور چیز چھونے سے پہلے کردار الگ کریں۔ ایک کنکشن کا کلائنٹ، کئی ایپلیکیشنز کی خدمت کرنے والا مشترکہ مددگار، اور دوسروں کے سیشن قبول کرنے والا سرور — یہ سب فہرست میں پس منظر کے پروسیس کی طرح دکھتے ہیں۔ ان میں سے صرف ایک کو ایسے نتائج کے بغیر بند کیا جا سکتا ہے جن پر آپ نے غور نہ کیا ہو۔

سگنل سے نہیں، مالک سے بند کریں

اس کنٹرول سے شروع کریں جو اس چیز کا مالک ہے: کنکشن کا منقطع کرنے کا بٹن، سروس کا معاون بند کرنے کا حکم، یا انتظامی ایجنٹ کا اپنا عمل۔ یہ راستے وہ ٹیئر ڈاؤن چلاتے ہیں جس کی پروڈکٹ توقع کرتی ہے، جس میں راستے ہٹانا اور ٹنل ڈیوائس بند کرنا شامل ہے۔ سگنل یہ سب چھوڑ دیتا ہے اور پیچھے حالت چھوڑ جاتا ہے۔

اس کے بعد کیا باقی رہتا ہے، دیکھیں۔ رہ جانے والا پروسیس اگلے کنکشن کا انتظار کر رہا ہو سکتا ہے، جو ناکام بندی نہیں بلکہ ڈیزائن کا انتخاب ہے۔

نگران آپ کے مارے ہوئے کو دوبارہ کیوں شروع کرتا ہے

اگر لانچ ڈیمن یا خودکار کنکشن پالیسی چاہتی ہے کہ ٹنل فعال رہے تو پروسیس مارنا کچھ نہیں ظاہر کرتا۔ نگران خروج دیکھتا ہے اور اسے دوبارہ شروع کر دیتا ہے، بعض اوقات آپ کے لاگ پڑھنے سے پہلے ہی۔

لڑنے سے پہلے نگران کو تلاش کریں۔ launchctl list لوڈ شدہ جابز اور ان کے لیبل دکھاتا ہے، اور keep-alive سیٹنگ والی جاب خروج پر دوبارہ شروع ہوتی ہے، ویسے ہی جیسے ڈیزائن کیا گیا۔ وہاں درست عمل ارادہ بدلنا ہے: جاب ان لوڈ کریں، خودکار کنکشن پالیسی بند کریں، یا منتظم سے ایسا کرنے کو کہیں۔ زبردستی بند کرنا مختلف معنی رکھنے والا مختلف اوزار ہے، اور یہ پھنسے ہوئے پروسیس کے لیے دستاویزی بحالی طریقہ کار کا حصہ ہے، معمول کے کنکشن انتظام کا نہیں۔

قتل نہیں، زندگی کے چکر کا واقعہ درج کریں

جزو کی شناخت، کلائنٹ ورژن، پہلا متعلقہ زندگی چکر واقعہ اور آپ نے کیا کیا، لکھیں۔ واقعہ عمل سے زیادہ اہم ہے، کیونکہ لاگ اِن پر دو نمونے نمودار ہونا آغاز کی ترتیب کا مسئلہ ہے جو دہرایا جائے گا۔ وہ ریکارڈ جو ایگزیکیوٹیبل فائل اور اس کے کنٹرولر کا نام لے، اگلے شخص کو اسے دوبارہ پیدا کرنے دیتا ہے۔

پھر مطلوبہ حالت کی تصدیق کریں: وہ سروس جس کی صارف کو ضرورت تھی، اور وہ نجی وسیلہ جس تک وہ پہنچتی ہے۔ اس پائپ لائن سے بچیں جو ذیلی سٹرنگ تلاش کر کے ہر میچ کو زبردستی مار دیتی ہے، کیونکہ یہ اوپر کی سب باتیں پھینک دیتی ہے اور عموماً اس بات کا ثبوت مٹا دیتی ہے کہ دو نمونے کیوں موجود تھے۔ اگر پروسیس بار بار واپس آئے تو نتیجہ کنفیگریشن یا ترتیب کی خرابی ہے، اور اصلاح کلائنٹ کے آغاز کے رویے کے مالک کے پاس ہے۔

متعلقہ مضامین