ব্যাশে জম্বি


11

বাশ জম্বিগুলি তৈরি করে বলে মনে হচ্ছে না। দেখে মনে হচ্ছে প্রক্রিয়াগুলি হত্যার সাথে সাথেই পুনরায় কাটা হয়ে যায়।

আমি কি বশ তৈরির জম্বি তৈরি করতে পারি?


কেন আমি জিজ্ঞাসা করছি:

আমি kill -9যদি একটি নির্দিষ্ট সময়ের মধ্যে মারা না যায় তবে আমি নিরাপদে কোনও শিশু প্রক্রিয়া বা এটি নিরাপদে হত্যা করতে সক্ষম হতে চাই তবে আমি ঘটনাক্রমে এমন কোনও প্রক্রিয়াটি জ্যাপ করতে চাই না যা আমার সন্তানের প্রক্রিয়া নয়। জম্বো প্রক্রিয়াগুলি এটিকে সাধারণত খুব সহজ এবং রেস-শর্তটিকে নিরাপদ করে তোলে।


1
হতে পারে অন্য ধারণা ... আপনি যদি সত্যিই বাইরের প্রক্রিয়াগুলি হত্যার হাত থেকে রক্ষা করতে চান তবে cgroups দেখুন। unshareএকটি পিআইডি নেমস্পেস তৈরি করার জন্য কল করুন , যাতে সেই প্রক্রিয়া গাছের মধ্যে থেকে বাইরের প্রক্রিয়াগুলি বিচ্ছিন্ন এবং অ্যাক্সেসযোগ্য হয়।
অরিয়ান

ব্যবহারের কাজ নিয়ন্ত্রণ (হিসাবে kill -KILL %nযেখানে n, এর পরিবর্তে এটি পাশকাটিয়ে করার চেষ্টা কাজ সংখ্যা, ইত্যাদি) হয়।
নামমাত্র প্রাণী

দুর্দান্ত প্রশ্ন! "কেন আপনি জিজ্ঞাসা করছেন" - এর বিকল্প বিকল্প, যদিও: আপনি timeoutআদেশটি বিবেচনা করেছেন ?
ওয়াইল্ডকার্ড

উত্তর:


13

একটি জম্বি প্রক্রিয়া তৈরি করতে:

$ (sleep 1 & exec /bin/sleep 10)

এই শেল যা চালানোর প্রতিস্থাপন sleep 1সঙ্গে /bin/sleep 10যে জানবে না sleep 1তাই 10 সেকেন্ডের জন্য একটি বোকচন্দর তৈরি, প্রক্রিয়া সমাপ্ত করা হয়েছে।


আমি নিশ্চিত না যে আপনি একটি জম্বি প্রক্রিয়া হত্যার থেকে কী প্রত্যাশা করছেন। একটি জম্বি প্রক্রিয়া ইতিমধ্যে মারা গিয়েছিল, আপনি এটি হত্যা করতে পারবেন না।

প্রকৃতপক্ষে, আপনি জম্বি প্রক্রিয়াগুলি অদৃশ্য করতে পারেন তবে এর পিতামাতাকে হত্যা করে জম্বি নিজে প্রক্রিয়াজাত করে না।


কাটা পিআইডি পুনর্ব্যবহারযোগ্য হয়। জম্বিগুলির বিষয়টি হ'ল পিতা-মাতা অপেক্ষা করে বাচ্চার মৃত্যুর বিষয়টি স্বীকার না করা পর্যন্ত তারা পিআইডি সংরক্ষণ করে। এটি ব্যতীত, পিড মেরে দুর্ঘটনার শিকার হতে পারে।
PSkocik

1
সি-তে, আপনি নিশ্চিত হতে পারেন যে আপনি যখন আপনার সন্তানকে হত্যা করবেন তখন আপনি দুর্ঘটনাজনিত শিকার হবেন না কারণ যতক্ষণ না আপনি child সন্তানের জন্য অপেক্ষা করেছিলেন, সেই সন্তানের পিআইডি পুনর্ব্যবহার করা যাবে না। আমি শেল একই গ্যারান্টি থাকতে সক্ষম হতে চাই।
PSkocik

3

এত আকর্ষণীয় উত্তর নয়:

$ (A=$BASHPID && ( kill -STOP $A ))

[1]+  Stopped                 ( A=$BASHPID && ( kill -STOP $A ) )

$ ps -C bash
  PID TTY          TIME CMD
29453 pts/0    00:00:00 bash
29593 pts/0    00:00:00 bash
29594 pts/0    00:00:00 bash <defunct>

এটি কিভাবে একটি জম্বি প্রক্রিয়া? এটা ঠিক থেমে গেছে। এছাড়াও $BASHPIDহয় $$আমি মনে করি।
গ্যাবর সসরদী

$BASHPID হয় না একই যে $$। কোড নিম্নলিখিত চেষ্টা করুন: echo $$ $BASHPID ;echo $(echo $$ $BASHPID)। আপনি আরও তথ্য পেতে পারেন man bash
অ্যালেক্স বারানোভস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.