سؤال

ولدي عملية البائد على نظام بلدي:

abc      22093 19508  0 23:29 pts/4    00:00:00 grep ProcA
abc      31756     1  0 Dec08 ?        00:00:00 [ProcA_my_collect] <defunct>

وكيف يمكنني قتل العملية المذكورة أعلاه، دون إعادة تشغيل الجهاز؟ لقد حاولت مع

kill -9 31756
sudo kill -9 31756
هل كانت مفيدة؟

المحلول

ولقد قتل هذه العملية، ولكن عملية ميتة لا تختفي من الجدول العملية حتى ينفذ عملية الأم مهمة تسمى "جني" (الدعوة أساسا wait(3) لتلك العملية لقراءة الوضع خروجها). عمليات الميتة التي لم يجن تسمى " غيبوبة العمليات ."

ومعرف العملية الوالد ترى ل31756 هو معرف العملية 1، الذي ينتمي دائما إلى init. هذه العملية يجب أن تجني العمليات غيبوبة بشكل دوري، ولكن إذا كان لا يمكن، وسوف تظل الكسالى في الجدول العملية حتى إعادة تشغيل الكمبيوتر.

نصائح أخرى

هل قمت بفحص عملية تابعة التي قد تحتاج إلى أن يقتل أولا؟ أحيانا المربى حتى هو أسفل الخط ... محاولة ps -ef --forest

ولرؤية ما يمكن أن يكون أقل من ذلك (إذا كان أي شيء) ثم قتل ذلك أولا، ثم واحد كنت تعرف مسبقا حول

إذا قتل -9 فشل لقتل العملية السبب هو دائما تقريبا سائق أو نظام التشغيل علة.

لقد اعتمدت عملية الحرف الأول من العملية، ولكن لا يمكن أن تجني عليه. وهذا هو القول: عندما الحرف الأول يدعو الانتظار (2) لا يتم إرجاع هذه العملية. واحدة من الاهداف الرئيسية للالحرف الأول هو جني الأطفال اليتامى الميت، وبالتالي فإن المشكلة ليست أن الأم توفي قبل فحصدت ذلك. فكر؟ وإلا، الذي يحصد نتائج عملية nohup'd بعد الخروج

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

وربما كنت لن تكون قادرة على إذا قتل الوالد لا حلها. لأي سبب من الأسباب أنظمة لا يجمع هذه العملية غيبوبة.

وFWIW، رأيت أنه لا بأس به على boxen SCO Openserver التي استعملتها لإدارة. الثقيل استخدام متعدد المستخدمين وموارد النظام منخفضة، ولكن لا يبدو أن يضر أي شيء. مجرد إزعاج لي. :)

وهذه العملية ربما معلقة في مثل تجاهل إشارات مثل SIGPIPE، تحقق مع strace -p <pid> ما يحدث هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top