প্রসঙ্গ:
ব্যবহারকারীরা আমাকে চালানোর জন্য তাদের কাস্টম স্ক্রিপ্টগুলি সরবরাহ করে। এই স্ক্রিপ্টগুলি একাধিক জিইউআই প্রোগ্রাম, ব্যাকএন্ড পরিষেবা শুরু করতে স্ক্রিপ্টগুলির মতো কোনও ধরণের হতে পারে। স্ক্রিপ্টগুলি কীভাবে লেখা হয় তাতে আমার কোনও নিয়ন্ত্রণ নেই। এই স্ক্রিপ্টগুলি ব্লকিং ধরণের হতে পারে, যেমন সমস্ত শিশু প্রক্রিয়াগুলি (ক্রমান্বয়ে চালিত প্রোগ্রামগুলি) প্রস্থান না হওয়া পর্যন্ত মৃত্যুদন্ড কার্যকর হয়
#exaple of blocking script
echo "START"
first_program
second_program
echo "DONE"
বা নন-ব্লকিং টাইপ অর্থাত্ পটভূমিতে শিশু প্রক্রিয়া কাঁটাচামচ করে এমন কিছু থেকে বেরিয়ে আসে
#example of non-blocking script
echo "START"
first_program &
second_program &
echo "DONE"
আমি কী অর্জন করার চেষ্টা করছি?
ব্যবহারকারী প্রদত্ত স্ক্রিপ্টগুলি উপরের দুটি ধরণের যেকোন একটির বা উভয়ের মিশ্রণ হতে পারে। আমার কাজ হ'ল স্ক্রিপ্টটি চালানো এবং এটি দ্বারা শুরু হওয়া সমস্ত প্রক্রিয়াটি প্রস্থান হওয়া এবং তারপরে নোডটি বন্ধ হওয়া পর্যন্ত অপেক্ষা করা। যদি এটির ব্লকিং প্রকারের হয় তবে কেসটি সহজ সরল script স্ক্রিপ্ট এক্সিকিউশন প্রক্রিয়ার পিআইডি পান এবং পিএস-শেফ পর্যন্ত অপেক্ষা করুন | গ্রেপ-পিফের আর কোনও এন্ট্রি নেই। নন-ব্লক করা স্ক্রিপ্টগুলি আমাকে সমস্যা দেয়
কোনও স্ক্রিপ্ট কার্যকর করার মাধ্যমে উত্পন্ন সমস্ত শিশু প্রক্রিয়ার পিআইডি-র তালিকা পেতে পারি এমন কোন উপায় আছে কি? যে কোনও পয়েন্টার বা ইঙ্গিতগুলি অত্যন্ত প্রশংসা করবে
grep
, ঠিক ps –udummy_user
। এছাড়াও, প্রক্রিয়া গ্রুপগুলি দেখুন।
ps
কোনও শর্ত ছাড়াই এই শেলটি থেকে তৈরি সমস্ত প্রক্রিয়া তালিকাভুক্ত করতে পারেন (কেবল bash
এবং ps
শুরুতে হওয়া উচিত )। সেখানে আপনার স্ক্রিপ্ট শুরু করুন। এটি সমাপ্ত হওয়ার পরে, ps | wc -l
আপনার প্রত্যাশিত মান পৌঁছানো পর্যন্ত অপেক্ষা করুন ।
pid$(foo.sh; echo $!)
যা আপনাকে পিআইডি দেয়foo.sh
যাতে আপনি ব্যবহার করতে পারেনps --ppid
। কাজ করবে?