ক্রোম ব্রাউজারটি প্রতিক্রিয়াশীল ছিল না এবং আমি এটি হত্যার চেষ্টা করেছি, তবে প্রক্রিয়াটি অদৃশ্য হওয়ার পরিবর্তে <defunct>
ডানদিকে এসেছিল এবং নিহত হয় নি:
<defunct>
একটি প্রক্রিয়া জন্য কি এবং কেন এটি হত্যা করা হয় না?
ক্রোম ব্রাউজারটি প্রতিক্রিয়াশীল ছিল না এবং আমি এটি হত্যার চেষ্টা করেছি, তবে প্রক্রিয়াটি অদৃশ্য হওয়ার পরিবর্তে <defunct>
ডানদিকে এসেছিল এবং নিহত হয় নি:
<defunct>
একটি প্রক্রিয়া জন্য কি এবং কেন এটি হত্যা করা হয় না?
উত্তর:
আপনার আউটপুট থেকে আমরা একটি "অচল" দেখতে পাচ্ছি, যার অর্থ প্রক্রিয়াটি তার কাজটি সম্পূর্ণ করেছে বা দূষিত বা হত্যা করা হয়েছে, তবে এর শিশু প্রক্রিয়াগুলি এখনও চলছে বা এই পিতামাতার প্রক্রিয়াটি তার শিশু প্রক্রিয়াটি পর্যবেক্ষণ করছে। এই জাতীয় প্রক্রিয়াটি হারাতে মারুন -9 পিআইডি কাজ করে না। আপনি এই আদেশ দিয়ে তাদের হত্যা করার চেষ্টা করতে পারেন তবে এটি বার বার এটি প্রদর্শিত হবে।
এই ডিফল্ট প্রক্রিয়াটির মূল প্রক্রিয়াটি নির্ধারণ করুন এবং এটি হত্যা করুন kill এটি জানতে কমান্ডটি রান করুন:
ps -ef | grep defunct
UID PID PPID C STIME TTY TIME CMD
1000 637 27872 0 Oct12 ? 00:00:04 [chrome] <defunct>
1000 1808 1777 0 Oct04 ? 00:00:00 [zeitgeist-datah] <defunct>
তারপরে kill -9 637 27872
, তারপরে যাচাই প্রক্রিয়াটি শেষ হয়ে গেছে ps -ef | grep defunct
।
1
( init
) হলে কী হবে ? মনে করুন আমাকে অপেক্ষা করতে হবে?
ps -ef | grep defunct | grep -v grep | cut -b8-20 | xargs kill -9
grep [d]efunct
একই বা একই রূপে পরিবর্তন করুন এবং এটি নিজের সাথে মেলে না।
parents_of_dead_kids=$(ps -ef | grep [d]efunct | awk '{print $3}' | sort | uniq | egrep -v '^1$'); echo "$parents_of_dead_kids" | xargs kill
। kill -9
আপনার ইচ্ছা অনুযায়ী 30 সেকেন্ড বা তারপরে স্ক্রিপ্টটি পুনরায় চালু করুন । (দ্রষ্টব্য যে আমি বিশেষভাবে হত্যার বিষয়টি অস্বীকার করি Init
)
ম্যানুয়াল পৃষ্ঠা PS (1) বলেছেন :
চিহ্নিত প্রক্রিয়াগুলি হ'ল
<defunct>
মৃত প্রক্রিয়া (তথাকথিত "জম্বি" ) যেগুলি রয়ে গেছে কারণ তাদের পিতামাতারা তাদের সঠিকভাবে ধ্বংস করেন নি।init(8)
পিতামাতার প্রক্রিয়াটি যদি প্রস্থান করে তবে এই প্রক্রিয়াগুলি ধ্বংস হয়ে যাবে ।
আপনি এটি মারতে পারবেন না কারণ এটি ইতিমধ্যে মারা গেছে। প্রক্রিয়া টেবিলের মধ্যে একটি প্রবেশ কেবল অবশিষ্ট জিনিস :
ইউনিক্স এবং ইউনিক্সের মতো কম্পিউটার অপারেটিং সিস্টেমগুলিতে, একটি জম্বি প্রক্রিয়া বা বিপর্যয়যুক্ত প্রক্রিয়া এমন একটি প্রক্রিয়া যা কার্যকরকরণ সম্পন্ন করেছে তবে প্রক্রিয়া সারণিতে এখনও একটি প্রবেশ রয়েছে has পিতামাতার প্রক্রিয়াটিকে তার সন্তানের প্রস্থান স্থিতি পড়তে দেওয়ার জন্য এই এন্ট্রিটি এখনও প্রয়োজন।
এ জাতীয় প্রক্রিয়াগুলির মধ্যে অনেকগুলি উপস্থিত না থাকলে এগুলি হতে দেওয়াতে কোনও ক্ষতি নেই। জম্বি শেষ পর্যন্ত তার পিতামাতার দ্বারা ডেকে আনা হয় (কল করে wait(2)
)। যদি মূল পিতামাতারা তার নিজস্ব প্রস্থানের আগে এটি পুনরায় কাটা না করেন তবে init
প্রক্রিয়া ( pid == 1
) এটি পরবর্তী সময়ে এটি করে। বোকচন্দর প্রক্রিয়াটি কেবল:
এমন একটি প্রক্রিয়া যা শেষ হয়ে যায় এবং এটি মুছে ফেলা হয় যখন তার প্রস্থান স্থিতিটি অন্য প্রক্রিয়াতে জানানো হয়েছিল যা সেই প্রক্রিয়াটি শেষ হওয়ার অপেক্ষায় রয়েছে।
আপনাকে ধন্যবাদ মাইক এস। আমরা আপনার লাইনটি নিয়েছি এবং এমন একটি স্ক্রিপ্ট লিখেছিলাম যা এর পিতামাতৃক in.telnetd থাকা অদৃশ্য প্রক্রিয়াগুলিকে হত্যা করবে। আমরা এটি কোনও অভিভাবক প্রক্রিয়াটিকে হত্যা করতে চাইনি, কেবলমাত্র টেলনেটড যে আমরা জানি যে সমস্যা সৃষ্টি করছে এবং প্রয়োজনে আমরা একাধিকবার এটি হত্যা করতে একাধিকবার চালাব।
# egrep -v '^1$ = Make sure the process is not the init process.
# awk '{print $3}' = Print the parent process.
first_parent_of_first_dead_kid=$(ps -ef | grep [d]efunct | awk '{print $3}' | head -n1 | egrep -v '^1$')
echo "$first_parent_of_first_dead_kid"
# If the first parent of the first dead kid is in.telnetd, then kill it.
if ps -ef | grep $first_parent_of_first_dead_kid | grep in.telnetd;then
echo "We have a defunct process whose parent process is in.telnetd" | logger -t KILL-DEFUNCT-TELNET
echo "killing $first_parent_of_first_dead_kid" | logger -t KILL-DEFUNCT-TELNET
kill $first_parent_of_first_dead_kid 2>&1 | logger -t KILL-DEFUNCT-TELNET
fi
প্যাডিংটন এর উত্তর প্রসারিত ..
আপনার আউটপুট থেকে আমরা একটি অবনমিত দেখতে পাচ্ছি , যার অর্থ এই শিশু প্রক্রিয়াটি হয় তার কাজটি সম্পূর্ণ করেছে অথবা দূষিত বা হত্যা করা হয়েছে। এর মূল প্রক্রিয়াটি এখনও চলছে এবং এটির মৃত সন্তানের নজরে নেই।
kill -9 PID
কাজ করবে না (ইতিমধ্যে মারা গেছে)
এই শিশু প্রক্রিয়াটির পিতামাতার নির্ধারণ করতে, এই আদেশটি চালান:
ps -ef | grep defunct
UID PID **PPID** C STIME TTY TIME CMD
1000 637 27872 0 Oct12 ? 00:00:04 [chrome] <defunct>
পিতা বা মাতা কে দেখুন: ps ax | grep 27872
আপনি যদি চান তবে আপনি পিতামাতাকে হত্যা করতে পারেন, এবং অবসন্নতা চলে যাবে।
kill -9 27872
আরও প্রযুক্তিগত যুক্তির জন্য জেএফ সেবাস্তিয়ানের উত্তর দেখুন।
@ প্যাডিংটনের উত্তরে যুক্ত করে, আমি তাড়াতাড়ি যাচাইয়ের জন্য আমার বাশার্কে এই ফাংশনটি যুক্ত করেছি:
defunct(){
echo "Children:"
ps -ef | head -n1
ps -ef | grep defunct
echo "------------------------------"
echo "Parents:"
ppids="$(ps -ef | grep defunct | awk '{ print $3 }')"
echo "$ppids" | while read ppid; do
ps -A | grep "$ppid"
done
}
এটি এরকম কিছু তৈরি করে:
শিশু: ইউআইডি পিআইডি পিপিআইডি সি স্টিম টাইট টাইম সিএমডি ব্যবহারকারী 25707 25697 0 ফেব্রুয়ারি 26 পিটিএস / 0 00:00:00 [শ] ব্যবহারকারী 30381 29915 0 11:46 pts / 7 00:00:00 গ্রেপ বিচ্ছিন্ন ------------------------------ মাতাপিতা: 25697 পিটিএস / 0 00:00:00 এনএমপি
kill -9 PID
কাজ করে না"। এটি আংশিক সত্য: বাস্তবে, কোনও হত্যার কাজ হবে না। তদ্ব্যতীত -9 সর্বশেষ অবলম্বন হিসাবে ব্যবহার করা উচিত। 99% সময় পিতামাতার প্রক্রিয়াটির ডিফল্ট কিল এটি হত্যা করে এবং সমস্ত শিশুকে কাটাবে। একটি "ডিফল্ট কিল" হ'ল একটি সাইনটারম (-15)। আমি -9 (সিগকল) এর অনুরাগীদের স্ট্যাকওভারফ্লো.com