কিভাবে জম্বি প্রক্রিয়া হত্যা করতে


183

আমি আমার প্রোগ্রামটি ফোরগ্রাউন্ডে (একটি ডেমন প্রোগ্রাম) চালু করেছি এবং তারপরে আমি এটি দিয়ে হত্যা করেছিলাম kill -9, তবে আমি একটি জম্বি পেয়েছি এবং আমি এটি দিয়ে হত্যা করতে পারছি না kill -9। কিভাবে একটি জম্বি প্রক্রিয়া হত্যা করতে?

যদি জম্বিটি একটি মৃত প্রক্রিয়া হয় (ইতিমধ্যে নিহত), তবে আমি কীভাবে এটিকে আউটপুট থেকে সরিয়ে দেব ps aux?

root@OpenWrt:~# anyprogramd &
root@OpenWrt:~# ps aux | grep anyprogram
 1163 root      2552 S    anyprogramd
 1167 root      2552 S    anyprogramd
 1169 root      2552 S    anyprogramd
 1170 root      2552 S    anyprogramd
10101 root       944 S    grep anyprogram
root@OpenWrt:~# pidof anyprogramd
1170 1169 1167 1163
root@OpenWrt:~# kill -9 1170 1169 1167 1163
root@OpenWrt:~# ps aux |grep anyprogram
 1163 root         0 Z    [anyprogramd]
root@OpenWrt:~# kill -9 1163
root@OpenWrt:~# ps aux |grep anyprogram
 1163 root         0 Z    [anyprogramd]

2
কি ps -o ppid 1163বলে? অর্থাৎ, 1163 এর পিতামাতা কে? সেই প্রক্রিয়াটি অবশ্যই শেষ করা উচিত।
উইলিয়াম পার্সেল

উত্তর:


247

একটি জম্বি ইতিমধ্যে মারা গেছে, সুতরাং আপনি এটি হত্যা করতে পারবেন না। একটি জম্বি পরিষ্কার করার জন্য, এটি অবশ্যই তার পিতামাতার দ্বারা অপেক্ষা করা উচিত, সুতরাং পিতামাতাকে হত্যা করা জম্বিটি দূর করার জন্য কাজ করা উচিত। (পিতামাতার মৃত্যুর পরে জম্বিটি পিড 1 দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হবে যা এটির জন্য অপেক্ষা করবে এবং প্রক্রিয়া সারণিতে এর প্রবেশ পরিষ্কার করবে)) যদি আপনার ডিমনটি বাচ্চাদের জম্বি পরিণত হয় তবে আপনার একটি বাগ রয়েছে। আপনার ডিমনটি তার শিশুদের মারা যাওয়ার সময় এবং waitতাদের প্রস্থান স্থিতি নির্ধারণের জন্য লক্ষ্য করা উচিত ।

আপনি যে কোনও প্রক্রিয়াতে জম্বিটির পিতামাতার প্রতিটি সংকেত প্রেরণ করতে পারেন তার একটি উদাহরণ (নোট করুন যে এটি অত্যন্ত অপরিশোধিত এবং আপনার ইচ্ছা মতো প্রসেসগুলি মেরে ফেলতে পারে I আমি এই ধরণের স্লেজ হাতুড়ি ব্যবহার করার পরামর্শ দিচ্ছি না):

# Don't do this.  Incredibly risky sledge hammer!
kill $(ps -A -ostat,ppid | awk '/[zZ]/ && !a[$2]++ {print $2}')

1
যদি জম্বিটি একটি মৃত প্রক্রিয়া হয় (ইতিমধ্যে নিহত), তবে আমি কীভাবে এটিকে আউটপুট থেকে সরিয়ে দেব ps aux?
মোহামেদ

185
জম্বি অবশ্যই তার পিতামাতার দ্বারা অপেক্ষা করা উচিত। এর পিতামাতার সন্ধান করুন এবং জানুন যে সেই পিতা-মাতা কেন তার বাচ্চাদের দিকে মনোযোগ দিচ্ছেন না, তারপরে সামাজিক পরিষেবাদি দিয়ে অভিযোগ দায়ের করুন। ;)
উইলিয়াম পার্সেল

1
ধরে kill $(ps -A -ostat,ppid | awk '/[zZ]/{print $2}' | sort -u)
নিই আপনার কাছে প্রচুর পরিমাণে জম্বি

2
সাধারণত, আপনি PPidসারিতে পিতামাতার সন্ধান করতে পারেন আপনি যদিcat /proc/<pid>/status
ড্যানিয়েল আন্ড্রেই মিনসি

1
স্রেফ কল্পনা করেছেন নন-আইটি লোকেরা এখানে এসে এটি পড়ে। ক্রেজি।
ZitRo

68

আপনি নিম্নোক্ত কমান্ডের সাহায্যে একটি জম্বি প্রক্রিয়াটির পিতামাতার প্রক্রিয়াটি হত্যা করে পরিষ্কার করতে পারেন:

kill -HUP $(ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }')

6
এই কমান্ডটি প্রসেস টেবিল থেকে জম্বিটি সাফ করে, তবে এটি জম্বিটিকে 'হত্যা' করে না। জম্বিটি ইতিমধ্যে মারা গেছে।
উইলিয়াম পার্সেল 12

8
grepপ্রয়োজন নেই। ps ... | awk '/[zZ]/{print $2}'
উইলিয়াম পার্সেল

2
আফিক্স, এই আদেশটি জম্বিটিকে হত্যা করে না, তবে তার অভিভাবক প্রক্রিয়াতে সাইনগআপ প্রেরণ করে (সম্ভবত উত্তরে পিতামাতাকে হত্যা করা যদি এটি সিএইচইপআপ পরিচালনা না করে এবং জুম্বিকে পূর্ববর্তী উত্তরে বর্ণিত হিসাবে ইনসকে পুনঃস্থাপন করা হয়)। সুতরাং এই আদেশটি সম্পর্কে সাবধানতা অবলম্বন করুন, এটি এমন কোনও কিছুকে হত্যা করতে পারে যা আপনি প্রত্যাশা করেছিলেন না ...
ম্যাথিজস কুইজমান

1
এটি আমার পক্ষে কাজ করে না। আমি "কিল-হুপ প্রসেসআইডি" করেছি এবং প্রক্রিয়াটি এখনও একটি জম্বি হিসাবে রয়েছে
কোমরাডহোমার

1
@ উইলিয়ামপ্রসেল যখন আপনি কোনও প্রশ্নের উত্তর দেন, দয়া করে কমান্ড লাইনটি ব্যবহারের ফলাফল এবং এটি স্পষ্টভাবে কী করে তা বর্ণনা করুন কারণ এটি কম্পিউটারে চলমান সমস্ত প্রোগ্রামকে হত্যা করে।
দালেক

39

আমি চেষ্টা করেছিলাম:

ps aux | grep -w Z   # returns the zombies pid
ps o ppid {returned pid from previous command}   # returns the parent
kill -1 {the parent id from previous command}

এটি কাজ করবে :)


আমি আমার ক্ষেত্রে জম্বি একটি স্টার্ট-আপ স্ক্রিপ্ট এবং একটি প্রোগ্রামের মাধ্যমে তৈরি করছিলাম যা পরিষ্কারভাবে সরানো হয়নি তাই আমি এটি সাফ করে দিয়েছি।
মোহাম্মদ রাফি

1
আমার জন্য কাজ করেছেন। এটি নির্দিষ্ট ক্ষেত্রে কার্যকর হবে যখন অ্যান্থার কিলড প্রক্রিয়া দ্বারা অকার্যকর প্রক্রিয়াটি তৈরি হয়েছিল।
এরিক এস। বুলিংটন

2
আমি এটি হত্যা করার আগে পিতামাতার প্রক্রিয়াটি পরীক্ষা করেছিলাম। এবং আমি কেবল এটি -1 এর পরিবর্তে -9 ব্যবহার করে হত্যা করেছি: মেরুন -9 {পিতামহীন আইডি}
আলী

আমাকে -১ এর পরিবর্তে আমার হত্যার জন্য -9 ব্যবহার করতে হয়েছিল
মাইকেল স্মিথ

26

এটি http://www.linuxquestions.org/questions/suse-novell-60/howto-kill-defunct-processes-574612/ এ পাওয়া গেছে

2) এখানে অন্য ব্যবহারকারী (থেক্সস বিল ডানড্রেটা) এর দুর্দান্ত টিপ: কখনও কখনও

kill -9 <pid>

একটি প্রক্রিয়া হত্যা করবে না। চালান

ps -xal

চতুর্থ ক্ষেত্রটি হল পিতামাতার প্রক্রিয়া, একটি জম্বি'র সমস্ত বাবা-মা কে মেরে ফেল এবং জম্বি মারা যায়!

উদাহরণ

4 0 18581 31706 17 0 2664 1236 wait S ? 0:00 sh -c /usr/bin/gcc -fomit-frame-pointer -O -mfpmat
4 0 18582 18581 17 0 2064 828 wait S ? 0:00 /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/gcc -fomit-fr
4 0 18583 18582 21 0 6684 3100 - R ? 0:00 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/cc1 -quie

18581, 18582, 18583বোকচন্দর রয়েছে -

kill -9 18581 18582 18583

কোন প্রভাব আছে।

kill -9 31706

জম্বিগুলি সরিয়ে দেয়


3
ঠিক আছে যে শুধু initআমার জন্য হত্যা করেছে, এবং এখন আমি কিছুই করতে পারছি না এবং পুনরায় চালু করতে বাধ্য হচ্ছি ... জম্বি প্রক্রিয়াটি জাভা, 4 জিবি র্যামের মধ্যে
3.4

22

আমি চেষ্টা করেছিলাম

kill -9 $(ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }')

এবং এটা আমার জন্য কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.